/[PAMELA software]/PamelaLevel2/inc/PamLevel2.h
ViewVC logotype

Contents of /PamelaLevel2/inc/PamLevel2.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.29 - (show annotations) (download)
Fri Oct 26 09:08:50 2007 UTC (17 years, 4 months ago) by mocchiut
Branch: MAIN
Changes since 1.28: +3 -0 lines
File MIME type: text/plain
Added method PamLevel2::SetMaxShift(Int_t shift) in order to handle maximum discrepancy btw L2 and L0 data

1
2
3 /**
4 * \file PamLevel2.h
5 * \author Elena Vannuccini
6 */
7 #ifndef pamlevel2_h
8 #define pamlevel2_h
9
10 #include <TRefArray.h>
11
12 #include <TrkStruct.h>
13 #include <TrkParams.h>
14 #include <TrkLevel0.h>
15 #include <TrkLevel1.h>
16 #include <TrkLevel2.h>
17 #include <TrkHough.h>
18 #include <CaloLevel0.h>
19 #include <CaloLevel1.h>
20 #include <CaloLevel2.h>
21 #include <ToFLevel2.h>
22 #include <TrigLevel2.h>
23 #include <S4Level2.h>
24 #include <NDLevel2.h>
25 #include <AcLevel2.h>
26 #include <OrbitalInfo.h>
27 #include <RunInfo.h>
28 #include <GLTables.h>
29
30
31 #include <TTree.h>
32 #include <TFriendElement.h>
33 #include <TChain.h>
34 #include <TChainElement.h>
35 #include <TFile.h>
36 #include <TList.h>
37 #include <TKey.h>
38 #include <TSystemFile.h>
39 #include <TSystemDirectory.h>
40 #include <TSQLServer.h>
41
42 #include <stdlib.h>
43 #include <iostream>
44 #include <iomanip>
45 using namespace std;
46
47 #define NCLONES 10
48
49 using namespace std;
50
51 /**
52 * \brief Class to describe particle tracks in the apparatus, including tracker and track-related variables from other detectors (calorimeter and TOF).
53 *
54 * This class inherites from TrkTrack, CaloTrkVar ecc...
55 *
56 */
57 //class PamTrack : public TrkTrack, public CaloTrkVar, public ToFTrkVar {
58 class PamTrack : public TObject {
59
60 private:
61
62 TrkTrack* trk_track;
63 CaloTrkVar* calo_track;
64 ToFTrkVar* tof_track;
65 Int_t pscore;
66 Int_t iscore;
67 bool candeleteobj;
68
69 // TClonesArray *Cluster; ///< clusters (if stored)
70
71 public:
72
73 PamTrack();
74 PamTrack(TrkTrack* , CaloTrkVar* , ToFTrkVar* );
75 PamTrack(const PamTrack&);
76 ~PamTrack(){ Delete(); };
77
78 void Clear();
79 void Clear(Option_t *option){Clear();};
80 void Delete();
81
82 Bool_t IsSolved(){if ((pscore-iscore)>0) return true; return false;};
83 Int_t GetScore(){return (pscore-iscore);};
84 Int_t GetPScore(){return (pscore);};
85 Int_t GetIScore(){return (iscore);};
86 void SetPScore(Int_t p){pscore=p;};
87 void SetIScore(Int_t i){iscore=i;};
88
89 TrkTrack* GetTrkTrack(){return trk_track;};
90 CaloTrkVar* GetCaloTrack(){return calo_track;};
91 ToFTrkVar* GetToFTrack(){return tof_track;};
92
93 ClassDef(PamTrack,1);
94 };
95
96 /**
97 * \brief Class to describe PAMELA LEVEL2 data.
98 *
99 * This class inherites from TrkLevel2, CaloLevel2 ecc... and it overrides the TrkLevel2:GetTrack(int it) and TrkLevel2:GetTrackImage(int it) methods.
100 * This allows to solve the tracker ambiguity (that is, to choose between track images) by using also information from other detectors.
101 */
102
103 //class PamLevel2 : public CaloLevel2, public CaloLevel1, public ToFLevel2, public TrkLevel2, public TrkLevel1, public TrkHough, public TrigLevel2, public S4Level2, public NDLevel2, public AcLevel2, public OrbitalInfo {
104 class PamLevel2 : public TObject {
105
106 private:
107
108 // ------------------------------
109 // variables to retrieve run info
110 // ------------------------------
111 // Int_t irun; //current run entry, relative to the TChain
112 Long64_t irun; //current run entry, relative to the TChain
113 // ULong64_t runfirstentry; //first entry of run, relative to the TChain
114 // ULong64_t runlastentry; //last entry of run, relative to the TChain
115 // Int_t irunentry; //position of current entry, relative to the run
116 Long64_t runfirstentry; //first entry of run, relative to the TChain
117 Long64_t runlastentry; //last entry of run, relative to the TChain
118 Long64_t irunentry; //position of current entry, relative to the run
119 TChain* run_tree;
120 TTree* run_tree_clone;
121 TChain* sel_tree;
122 TTree* sel_tree_clone;
123
124 // -------------------------------------------
125 // variables to store total live and dead time
126 // -------------------------------------------
127 ULong64_t totdltime[3];// 0=live 1=dead 2=n.events
128
129 // ---------------------------------
130 // variables to retrieve level0 info
131 // ---------------------------------
132 TFile* l0_file;
133 TTree* l0_tree;
134 Int_t iroot;
135 Int_t prevshift; // to remember if any shift is needed to synchronize l0 and l2 data instead of calculating any time
136 Int_t maxshift; // EMILIANO maximum discrepancy between L2 and L0 data (the bigger the better concering synch but the processing speed drops) default = 10
137 // --------------------------------------------
138 // variables to store Level0 info (if required)
139 // --------------------------------------------
140 EventHeader* h0_obj;
141 TrkLevel0* trk0_obj;
142 CaloLevel0* calo0_obj;
143
144 // ---------------------------
145 // variables to connect the DB
146 // ---------------------------
147 TSQLServer* dbc;
148 TString host;
149 TString user;
150 TString psw;
151
152 // ---------------------------------------------
153 // variables to retrieve and clone level1-2 info
154 // ---------------------------------------------
155 TChain* pam_tree;
156 TTree* pam_tree_clone[NCLONES];
157
158 // --------------------------------------------
159 // variables to store Level0 info (if required)
160 // --------------------------------------------
161 TrkLevel1* trk1_obj;
162 TrkLevel2* trk2_obj;
163 TrkHough* trkh_obj;
164 CaloLevel1* calo1_obj;
165 CaloLevel2* calo2_obj;
166 ToFLevel2* tof_obj;
167 TrigLevel2* trig_obj;
168 S4Level2* s4_obj;
169 NDLevel2* nd_obj;
170 AcLevel2* ac_obj;
171 OrbitalInfo* orb_obj;
172 GL_RUN* run_obj;
173 SoftInfo* soft_obj; // Emiliano
174
175 // -----------------------------------
176 // variables to sort the track
177 // -----------------------------------
178 TClonesArray *tsorted;
179 TClonesArray *timage;
180 PamTrack *track; //store the last required
181 TString howtosort;
182 Float_t sortthr;
183
184 // -----
185 // flags
186 // -----
187 Bool_t CAL2; //level2 branch
188 Bool_t CAL1; //level1 branch
189 Bool_t CAL0; //yoda
190
191 Bool_t TRK2; //level2 branch
192 Bool_t TRK1; //level1 branch
193 Bool_t TRKh; //hough branch
194 Bool_t TRK0; //yoda
195
196 Bool_t TOF;
197 Bool_t TOF0;
198
199 Bool_t TRG;
200 Bool_t S4;
201 Bool_t ND;
202 Bool_t AC;
203 Bool_t ORB;
204
205 Bool_t RUN;
206
207 Bool_t ISGP; //GP simulation
208
209
210 Int_t SELLI; //trees of selected events (there is a selection list)
211
212 void Initialize();
213
214
215 public:
216
217 PamLevel2(TString ddir,TString list,TString detlist);
218 PamLevel2(TString ddir,TString list);
219 PamLevel2();
220 ~PamLevel2(){Delete();};
221
222 void Clear();
223 void Reset();
224 void Delete();
225
226
227 // =============================================
228 // methods needed to read/write Level0-1-2 trees
229 // =============================================
230 void SetWhichTrees(TString);
231 void GetWhichTrees(TFile*);
232
233 TTree* GetPamTree(TFile*,TString);
234 TTree* GetPamTree(TFile* f){return GetPamTree(f,"");};
235
236 TList* GetListOfLevel2Files(TString, TString);
237 Bool_t CheckLevel2File(TString);
238 TChain* GetPamTree(TList*,TString);
239 TChain* GetPamTree(TString ddir,TString list,TString detlist){ return GetPamTree(GetListOfLevel2Files(ddir,list),detlist); };
240 TChain* GetPamTree(TString ddir,TString list){ return GetPamTree(GetListOfLevel2Files(ddir,list),""); };
241 TChain* AddFriend(TString);
242
243 TTree* GetRunTree(TFile*);
244 TChain* GetRunTree(TList*);
245 TChain* GetRunTree(TString ddir,TString list){ return GetRunTree(GetListOfLevel2Files(ddir,list)); };
246 Bool_t UpdateRunInfo(Long64_t);//{ return UpdateRunInfo(run_tree,iev); };
247 Bool_t UpdateRunInfo(TTree *,Long64_t);
248 Bool_t UpdateRunInfo(TChain *,Long64_t);
249
250 void CreateCloneTrees0(TChain *fChain, TFile* file);
251 void CreateCloneTrees(TFile* file);
252 void CreateCloneTrees(){CreateCloneTrees(NULL);};
253 void FillCloneTrees();
254 TTree *GetCloneTree(TString);
255 void WriteCloneTrees();
256
257 void SetBranchAddress(TTree *);
258 void SetBranchAddress(TChain *);
259
260 // Int_t GetEntry(Int_t);
261 Int_t GetEntry(Long64_t);
262 Int_t GetYodaEntry();
263
264 void SetMaxShift(Int_t sh){ maxshift = sh; return;}; // EMILIANO method to change the maxshift variable
265
266 Long64_t GetEntries(){return pam_tree->GetEntries();};
267 TChain* GetPamTree(){return pam_tree;};
268 TChain* GetRunTree(){return run_tree;};
269 TTree* GetYodaTree();
270
271 TFile* GetYodaFile(){return l0_file;}; // can be useful to know the name of level0 file we are using or similar things
272
273 // =============
274 // DB connection
275 // =============
276 void SetDBHost(TString str){host=str;};
277 void SetDBUser(TString str){user=str;};
278 void SetDBPsw(TString str){psw=str;};
279 TSQLServer* GetSQLServer(){return dbc;};
280 Bool_t SetDBConnection();
281
282 // ========================================================
283 // methods needed to retrieve subdetector general variables
284 // ========================================================
285 void* GetPointerTo(const char*);
286 EventHeader *GetEventHeader() { return h0_obj; };
287
288 /* TrkLevel0 *GetTrkLevel0() { return trk0_obj; }; */
289 /* CaloLevel0 *GetCaloLevel0() { return calo0_obj; }; */
290 TrkLevel0 *GetTrkLevel0();
291 CaloLevel0 *GetCaloLevel0();
292
293
294 TrkLevel1 *GetTrkLevel1() { return trk1_obj; };
295 TrkLevel2 *GetTrkLevel2() { return trk2_obj; };
296 TrkHough *GetTrkHough() { return trkh_obj; };
297 CaloLevel1 *GetCaloLevel1() { return calo1_obj;};
298 CaloLevel2 *GetCaloLevel2() { return calo2_obj;};
299 ToFLevel2 *GetToFLevel2() { return tof_obj; };
300 TrigLevel2 *GetTrigLevel2() { return trig_obj; };
301 S4Level2 *GetS4Level2() { return s4_obj; };
302 NDLevel2 *GetNDLevel2() { return nd_obj; };
303 AcLevel2 *GetAcLevel2() { return ac_obj; };
304 OrbitalInfo *GetOrbitalInfo(){ return orb_obj; };
305 GL_RUN *GetRunInfo() { return run_obj; };
306 SoftInfo *GetSoftInfo() { return soft_obj; }; // Emiliano
307
308 // ==============================================
309 // methods to retrieve subdetectors stored tracks
310 // ==============================================
311 TrkTrack* GetTrkStoredTrack(int seqno){return trk2_obj->TrkLevel2::GetStoredTrack(seqno); };
312 CaloTrkVar* GetCaloStoredTrack(int);
313 ToFTrkVar* GetToFStoredTrack(int);
314 //
315 PamTrack* GetPamTrackAlong(TrkTrack*);
316 // PamTrack* GetPamTrackAlong(CaloTrkVar*); //se serve
317 // PamTrack* GetPamTrackAlong(ToFTrkVar*); //se serve
318
319 // =================================
320 // methods to retrieve pamela tracks
321 // =================================
322 PamTrack* GetStoredTrack(Int_t);
323 //
324 void SortTracks(TString); //assign value to variable sorted_tracks
325 void SortTracks(); //assign value to variable sorted_tracks
326 // TRefArray* GetTracks(); //return sorted_tracks
327 TClonesArray* GetTracks(); //return sorted_tracks
328 PamTrack* GetTrack(int);
329 PamTrack* GetTrackImage(int);
330 void SetSortingMethod(TString how){ howtosort = how; return;};
331 TString GetSortingMethod(){return howtosort;};
332 void SetNucleiSortingThreshold(Float_t nucleithr){ sortthr = nucleithr; return;};
333 Float_t GetNucleiSortingThreshold(){ return sortthr;};
334
335 // =================================
336 // other methods
337 // =================================
338 // Int_t ntrk(){ return trk2_obj->TrkLevel2::ntrk(); };
339
340 // -----
341 // flags methods
342 // -----
343 Bool_t IsCAL2(){return CAL2;}; //level2 branch
344 Bool_t IsCAL1(){return CAL1;}; //level1 branch
345 Bool_t IsCAL0(){return CAL0;}; //yoda
346
347 Bool_t IsTRK2(){return TRK2;}; //level2 branch
348 Bool_t IsTRK1(){return TRK1;}; //level1 branch
349 Bool_t IsTRKh(){return TRKh;}; //hough branch
350 Bool_t IsTRK0(){return TRK0;}; //yoda
351
352 Bool_t IsTOF(){return TOF;};
353 Bool_t IsTOF0(){return TOF0;};
354
355 Bool_t IsTRG(){return TRG;};
356 Bool_t IsS4(){return S4;};
357 Bool_t IsND(){return ND;};
358 Bool_t IsAC(){return AC;};
359 Bool_t IsORB(){return ORB;};
360
361 Bool_t IsRUN(){return RUN;};
362
363 Bool_t IsGood();
364
365 Int_t IsSELLI(){return SELLI;}; //trees of selected events (there is a selection list)
366
367 Bool_t IsGP(){return ISGP;};
368
369 void SetGP(Bool_t tt){ISGP=tt;};
370
371
372 ClassDef(PamLevel2,1);
373 };
374
375 //===============================================================================================
376 //
377 //
378 //
379 //
380 //===============================================================================================
381
382
383 #endif
384

  ViewVC Help
Powered by ViewVC 1.1.23