source: trunk/Mars/hawc/display.C@ 19953

Last change on this file since 19953 was 19361, checked in by tbretz, 6 years ago
A simple version of an event display.
File size: 4.2 KB
Line 
1#include "MLogManip.h"
2
3/*****************************************************************
4
5 DISPLAY -- Display calibrated data
6
7 datafile:
8 A calibarted root file which came out of callist,
9 e.g. 20170727_006_C.root
10
11 lvl1, lvl2:
12 Lower (1) and higher (2) cleaning level
13
14
15 To run the macro from the command line (assuming you are in a directory
16 Mars/build where you have built your Mars environment) ou can do
17
18 root ../hawc/display.C\(\"filename_C.root\"\)
19
20 or from within root
21
22 [0] .x ../hawc/display.C("filename_C.root")
23
24
25 You will get a status display. You can step through the events
26 either by selecting Loop/SingleStep from the menu bar or
27 by pressing the space key in the status window.
28
29 Note that as a default (see below in the code), events which
30 do not survive image cleaning are skipped.
31
32******************************************************************/
33int display(const char *datafile, Double_t lvl1=7.8, Double_t lvl2=3.9, const char *outpath=".")
34{
35 // The delta t [ns/deg] for the image cleaning
36 double deltat = 17.5;
37
38 // --------------------------------------------------------
39
40 gLog.Separator("Star");
41 gLog << all << "Calculate image parameters of sequence ";
42 gLog << datafile << endl;
43 gLog << endl;
44
45 // ------------------------------------------------------
46
47 // Allocate/open the status display
48 MStatusDisplay *d = new MStatusDisplay;
49 d->SetLoopStep();
50
51 // Instantiate the list of tasks
52 MTaskList tlist;
53
54 // Instantiate the list of parameter containers
55 MParList plist2;
56 plist2.AddToList(&tlist);
57
58 // Instatiate the event loop
59 MEvtLoop loop;
60 loop.SetDisplay(d);
61 loop.SetParList(&plist2);
62
63 // Instantiate the reading task
64 MReadMarsFile read("Events");
65 read.DisableAutoScheme();
66 read.AddFile(datafile);
67
68 // Instantiate the task which takes care of the size of all containers
69 MGeomApply apply;
70
71 // Instantiate the image cleaning
72
73 // This is the most simple image cleaning possible, standard
74 // tail cut based on absolute amplitudes
75 // MImgCleanStd clean(lvl1, lvl2);
76 // clean.SetMethod(MImgCleanStd::kAbsolute);
77 // clean.SetPostCleanType(3);
78
79 // Instantiate the image cleaning as described in the TRAC
80 MImgCleanTime clean;
81 clean.SetMinCount(0);
82 clean.SetMinSize(50);
83 clean.SetDeltaT(17.5);
84
85 // Instantiate the calculation of the image parameters
86 MHillasCalc hcalc;
87 hcalc.Disable(MHillasCalc::kCalcConc);
88
89 // Instantiate all the displays
90 MHEvent evt01a(MHEvent::kEvtSignalDensity);
91 MHEvent evt01b(MHEvent::kEvtArrTime);
92 MHEvent evt02a(MHEvent::kEvtSignalDensity);
93 MHEvent evt02b(MHEvent::kEvtArrTimeCleaned);
94 MHEvent evt03 (MHEvent::kEvtIslandIndex);
95
96 evt01a.SetName("CalibSig");
97 evt01b.SetName("CalibTm");
98 evt02a.SetName("CleanSig");
99 evt02b.SetName("CleanTm");
100 evt03 .SetName("IslandIdx");
101
102 evt01a.SetMinimum(0);
103 evt01b.SetMinimum(0);
104 evt01b.SetMaximum(250);
105 evt02a.SetMinimum(0);
106
107 // Instantiate the tasks to fill the displays
108 MFillH fill01a(&evt01a, "MSignalCam", "MFillH1b");
109 MFillH fill01b(&evt01b, "MSignalCam", "MFillH1b");
110 MFillH fill02a(&evt02a, "MSignalCam", "MFillH2a");
111 MFillH fill02b(&evt02b, "MSignalCam", "MFillH2b");
112 MFillH fill03 (&evt03, "MSignalCam", "MFillH3");
113
114 // Instantiate printing the hillas parameters
115 MPrint print("MHillas");
116
117 // Setup the task list
118 tlist.AddToList(&read);
119 tlist.AddToList(&apply);
120
121 tlist.AddToList(&fill01a);
122 tlist.AddToList(&fill01b);
123 tlist.AddToList(&clean);
124
125 // Remove the two following tasks from the loop
126 // if you want to see all events not just the ones
127 // which survived image cleaning successfully
128 tlist.AddToList(&hcalc);
129 tlist.AddToList(&print);
130
131 // All those which come after MHillasCalc display the ellipse
132 tlist.AddToList(&fill02a);
133 tlist.AddToList(&fill02b);
134 tlist.AddToList(&fill03);
135
136 // Run the eventloop
137 if (!loop.Eventloop())
138 return 3;
139
140 // Check if the display was closed (deleted) by the user
141 if (!loop.GetDisplay())
142 return 4;
143
144 // ============================================================
145
146 return 0;
147}
Note: See TracBrowser for help on using the repository browser.