/[PAMELA software]/DarthVader/CalorimeterLevel2/doc/sostracker.cpp
ViewVC logotype

Annotation of /DarthVader/CalorimeterLevel2/doc/sostracker.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations) (download)
Fri May 19 13:15:48 2006 UTC (18 years, 6 months ago) by mocchiut
Branch point for: DarthVader, MAIN
Initial revision

1 mocchiut 1.1 //
2     // C/C++ headers
3     //
4     #include <fstream>
5     #include <string.h>
6     //
7     // ROOT headers
8     //
9     #include <TTree.h>
10     #include <TClassEdit.h>
11     #include <TObject.h>
12     #include <TList.h>
13     #include <TArrayL.h>
14     #include <TSystem.h>
15     #include <TSystemDirectory.h>
16     #include <TString.h>
17     #include <TFile.h>
18     #include <TClass.h>
19     #include <TCanvas.h>
20     #include <TH1.h>
21     #include <TH1F.h>
22     #include <TH2D.h>
23     #include <TLatex.h>
24     #include <TPad.h>
25     #include <TSQLServer.h>
26     #include <TSQLRow.h>
27     #include <TSQLResult.h>
28     #include <TClonesArray.h>
29     //
30     // YODA headers
31     //
32     #include <PamelaRun.h>
33     #include <RegistryEvent.h>
34     #include <physics/trigger/TriggerEvent.h>
35    
36     // #######################################################################################################################
37     //
38     // Calorimeter class CaloProcessing. Do not include CaloLevel2 (it doesn't compile I don't understand why...)
39     //
40     #include <CaloProcessing.h>
41     // #######################################################################################################################
42    
43    
44    
45     int main(){
46     //
47     // definizione di variabili
48     //
49     TFile *l0File = 0;
50     TTree *l0tr = 0;
51     TBranch *l0registry = 0;
52     TBranch *l0calo = 0;
53     ULong64_t atime = 0ULL;
54     UInt_t ei = 0;
55     UInt_t re = 0;
56     Int_t sgnl = 0;
57     pamela::RegistryEvent *l0reg=0;
58     TSQLServer *dbc = 0;
59     dbc = TSQLServer::Connect("mysql://localhost/pamelaprod","anonymous","");
60    
61     //
62     // e` importante che CaloProcessing chiami QUI prima di loopare sui run il suo costruttore!
63     //
64     // #######################################################################################################################
65     CaloProcessing *event = new CaloProcessing();
66     CaloLevel2 *ca = 0;
67     // #######################################################################################################################
68     //
69    
70     //
71     // LOOP ON THE RUNS at some time...
72     //
73    
74     //
75     // now we assume to process run 24 (my run 24 not the one on gundam if any) with
76     //
77     ULong64_t runheadtime = 132796435910ULL;
78     UInt_t evfrom = 179;
79     UInt_t evto = 200;
80     // UInt_t evto = 1354;
81    
82     //
83     // Open Level0 file and branches
84     //
85     l0File = new TFile("/wizard3/pamela/samara/filesfromyoda//dw_050318_00100.root");
86     if ( !l0File ) {
87     printf(" CALORIMETER - ERROR: problems opening Level0 file\n");
88     return(0);
89     };
90     l0tr = (TTree*)l0File->Get("Physics");
91     if ( !l0tr ) {
92     printf(" CALORIMETER - ERROR: no Physics tree in Level0 file\n");
93     l0File->Close();
94     return(0);
95     };
96     l0registry = l0tr->GetBranch("Registry");
97     if ( !l0registry ) {
98     printf(" CALORIMETER - ERROR: no Registry branch in Level0 tree\n");
99     l0File->Close();
100     return(0);
101     };
102     //
103     l0calo = l0tr->GetBranch("Calorimeter");
104     if ( !l0calo ) {
105     printf(" CALORIMETER - ERROR: no Calorimeter branch in Level0 tree\n");
106     l0File->Close();
107     return(0);
108     };
109     //
110     l0tr->SetBranchAddress("Registry", &l0reg);
111    
112    
113    
114    
115     // #######################################################################################################################
116     //
117     // Initialize the calorimeter event object, look for the calibration which include the first header
118     //
119     printf(" Check for calorimeter calibrations and initialize event object \n");
120     event->ProcessingInit(dbc,runheadtime,sgnl,l0tr);
121     printf("\n");
122     //
123     // Check if we have to load parameter files (one time for every run)
124     //
125     event->ChkParam(dbc,runheadtime); // calorimeter parameter files
126     //
127     // #######################################################################################################################
128    
129    
130    
131    
132     //
133     // run over all the events of the run
134     //
135     printf("\n Ready to start! \n\n");
136     //
137     for ( re = evfrom; re <= evto; re++){
138     //
139     l0registry->GetEntry(re);
140     //
141     // absolute time of this event
142     //
143     atime = l0reg->absTime;
144     //
145     // physics events is at entry number ei where
146     //
147     ei = l0reg->event;
148     //
149    
150    
151    
152     // #######################################################################################################################
153     //
154     // create (or clear if existing) a calorimeter level2 object
155     //
156     ca = new CaloLevel2();
157     //
158     // check if the calibration we are using is still good, if not load another calibration
159     //
160     event->ChkCalib(dbc,atime);
161     //
162     // set this variable to one to be sure to process the event (usually I do not process the event if I don't have a track or a selftrigger event)
163     //. =====> Notice: the event will NOT be processed if any CRC error in the calorimeter data has occured!! <=====
164     //
165     event->clevel1->good2 = 1;
166     //
167     // Calibrate calorimeter event with registry number "ei" and store output in the two structures that will be passed to fortran routine
168     //
169     event->Calibrate(ei);
170     //
171     // Calculate variables common to all tracks (qtot, nstrip, calorimeter fit parameters etc.)
172     //
173     event->GetCommonVar();
174     //
175     // Fill common variables
176     //
177     event->FillCommonVar(ca);
178     //
179     // Clear structures used to communicate with fortran
180     //
181     event->ClearStructs();
182     //
183     // #######################################################################################################################
184     //
185    
186    
187     //
188     // use the output to do something
189     //
190     printf(" ### Calorimeter tracking output: ### \n");
191     printf(" => event %i reg entry %i <= \n",re,ei);
192     printf(" ax = %f \n",ca->impx);
193     printf(" tanx = %f \n",ca->tanx);
194     printf(" ay = %f \n",ca->impy);
195     printf(" tany = %f \n",ca->tany);
196     printf(" N. point fit x = %i \n",ca->npcfit[0]);
197     printf(" N. point fit y = %i \n",ca->npcfit[1]);
198     printf(" Variance fit x = %f \n",ca->varcfit[0]);
199     printf(" Variance fit y = %f \n",ca->varcfit[1]);
200     printf(" Energy assuming interacting electron [GeV]= %f \n",ca->elen);
201     printf(" Error on energy [GeV]= %f \n",ca->selen);
202     printf(" #################################### \n");
203     //
204     };
205    
206    
207    
208     // #######################################################################################################################
209     //
210     // this is needed before processing another run!
211     //
212     event->RunClose();
213     //
214     // #######################################################################################################################
215    
216    
217    
218     //
219     // end of the loop over the runs
220     //
221    
222     }

  ViewVC Help
Powered by ViewVC 1.1.23