source: trunk/MagicSoft/Mars/macros/readMagic.C@ 2987

Last change on this file since 2987 was 2624, checked in by tbretz, 21 years ago
*** empty log message ***
File size: 3.9 KB
Line 
1/* ======================================================================== *\
2!
3! *
4! * This file is part of MARS, the MAGIC Analysis and Reconstruction
5! * Software. It is distributed to you in the hope that it can be a useful
6! * and timesaving tool in analysing Data of imaging Cerenkov telescopes.
7! * It is distributed WITHOUT ANY WARRANTY.
8! *
9! * Permission to use, copy, modify and distribute this software and its
10! * documentation for any purpose is hereby granted without fee,
11! * provided that the above copyright notice appear in all copies and
12! * that both that copyright notice and this permission notice appear
13! * in supporting documentation. It is provided "as is" without express
14! * or implied warranty.
15! *
16!
17!
18! Author(s): Thomas Bretz 12/2000 <mailto:tbretz@uni-sw.gwdg.de>
19!
20! Copyright: MAGIC Software Development, 2000-2001
21!
22!
23\* ======================================================================== */
24
25
26Bool_t HandleInput()
27{
28 TTimer timer("gSystem->ProcessEvents();", 50, kFALSE);
29 while (1)
30 {
31 //
32 // While reading the input process gui events asynchronously
33 //
34 timer.TurnOn();
35 TString input = Getline("Type 'q' to exit, <return> to go on: ");
36 timer.TurnOff();
37
38 if (input=="q\n")
39 return kFALSE;
40
41 if (input=="\n")
42 return kTRUE;
43 };
44
45 return kFALSE;
46}
47
48void readMagic(const char *fname="../Proton*.root")
49{
50 MParList plist;
51
52 MHillas hillas;
53 MHillasExt hillasext;
54 MNewImagePar newimgpar;
55 MTaskList tlist;
56
57 plist.AddToList(&hillas);
58 plist.AddToList(&hillasext);
59 plist.AddToList(&newimgpar);
60 plist.AddToList(&tlist);
61
62 MReadMarsFile read("Events", fname);
63 read.DisableAutoScheme();
64
65 MGeomApply geomapl;
66 MPrint print1("MMcEvt");
67 MPrint print2("MRawEvtHeader");
68 print1.EnableSkip();
69 print2.EnableSkip();
70
71 MMcPedestalCopy pcopy;
72 MMcPedestalNSBAdd pnsb;
73 MCerPhotCalc ncalc;
74 MBlindPixelCalc blind;
75 blind.SetUseInterpolation();
76 MClone clone("MCerPhotEvt");
77 MImgCleanStd clean;
78 MHillasCalc hcalc;
79
80 tlist.AddToList(&read);
81 tlist.AddToList(&geomapl);
82 tlist.AddToList(&print1);
83 tlist.AddToList(&print2);
84 tlist.AddToList(&pcopy);
85 tlist.AddToList(&pnsb);
86 tlist.AddToList(&ncalc);
87 tlist.AddToList(&blind);
88 tlist.AddToList(&clone);
89 tlist.AddToList(&clean);
90 tlist.AddToList(&hcalc);
91
92 MEvtLoop evtloop;
93 evtloop.SetParList(&plist);
94
95 if (!evtloop.PreProcess())
96 return;
97
98 MGeomCam *geomcam = (MGeomCam*)plist->FindObject("MGeomCam");
99
100 MHCamera display[4];
101 TCanvas c("Events", "Real Events", 600, 600);
102 c.SetBorderMode(0);
103 c.Divide(2,2);
104 for (int i=0; i<4; i++)
105 {
106 display[i].SetGeometry(*geomcam);
107 c.cd(i+1);
108 display[i].Draw();
109 gPad->cd(1);
110 hillas.Draw();
111 }
112
113 // Use this if you don't want the event to be autoscaled
114 //display.SetMinimum(0);
115 //display.SetMaximum(100);
116
117 while (tlist.Process())
118 {
119 cout << "Event #" << read.GetNumEntry() ":" << endl;
120
121 display[0].SetCamContent(*(MCerPhotEvt*)clone.GetClone());
122 display[1].SetCamContent(*(MCerPhotEvt*)plist.FindObject("MCerPhotEvt"));
123 display[2].SetCamContent(*(MCamEvent*)plist.FindObject("MCameraData"));
124 display[3].SetCamContent(*(MCamEvent*)plist.FindObject("MCameraData"));
125 TArrayF lvl(2);
126 lvl[0] = clean.GetCleanLvl2();
127 lvl[1] = clean.GetCleanLvl1();
128 display[3].SetLevels(lvl);
129
130 for (int i=1; i<=4; i++)
131 {
132 c.GetPad(i)->GetPad(1)->Modified();
133 c.GetPad(i)->GetPad(1)->Update();
134 }
135
136 hillas.Print(*geomcam);
137 hillasext.Print(*geomcam);
138 newimgpar.Print();
139
140 if (!HandleInput())
141 break;
142 }
143
144 evtloop.PostProcess();
145}
146
Note: See TracBrowser for help on using the repository browser.