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

Annotation of /PamelaLevel2/inc/PamLevel2.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.29 - (hide annotations) (download)
Fri Oct 26 09:08:50 2007 UTC (17 years, 1 month 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 pam-fi 1.1
2    
3     /**
4     * \file PamLevel2.h
5     * \author Elena Vannuccini
6     */
7     #ifndef pamlevel2_h
8     #define pamlevel2_h
9    
10 pam-fi 1.2 #include <TRefArray.h>
11 pam-fi 1.1
12 pam-fi 1.13 #include <TrkStruct.h>
13     #include <TrkParams.h>
14     #include <TrkLevel0.h>
15 pam-fi 1.4 #include <TrkLevel1.h>
16 pam-fi 1.1 #include <TrkLevel2.h>
17 pam-fi 1.6 #include <TrkHough.h>
18 mocchiut 1.16 #include <CaloLevel0.h>
19 pam-fi 1.6 #include <CaloLevel1.h>
20 pam-fi 1.1 #include <CaloLevel2.h>
21     #include <ToFLevel2.h>
22     #include <TrigLevel2.h>
23     #include <S4Level2.h>
24     #include <NDLevel2.h>
25     #include <AcLevel2.h>
26 pam-fi 1.2 #include <OrbitalInfo.h>
27 pam-fi 1.4 #include <RunInfo.h>
28     #include <GLTables.h>
29    
30 pam-fi 1.1
31     #include <TTree.h>
32 pam-fi 1.7 #include <TFriendElement.h>
33 pam-fi 1.2 #include <TChain.h>
34 pam-fi 1.26 #include <TChainElement.h>
35 pam-fi 1.1 #include <TFile.h>
36 pam-fi 1.2 #include <TList.h>
37     #include <TKey.h>
38     #include <TSystemFile.h>
39     #include <TSystemDirectory.h>
40 pam-fi 1.13 #include <TSQLServer.h>
41 pam-fi 1.1
42 pam-fi 1.26 #include <stdlib.h>
43 pam-fi 1.1 #include <iostream>
44 pam-fi 1.26 #include <iomanip>
45     using namespace std;
46 pam-fi 1.13
47     #define NCLONES 10
48    
49 pam-fi 1.1 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 pam-fi 1.10 //class PamTrack : public TrkTrack, public CaloTrkVar, public ToFTrkVar {
58     class PamTrack : public TObject {
59 pam-fi 1.1
60     private:
61    
62     TrkTrack* trk_track;
63     CaloTrkVar* calo_track;
64     ToFTrkVar* tof_track;
65 mocchiut 1.27 Int_t pscore;
66     Int_t iscore;
67 pam-fi 1.10 bool candeleteobj;
68    
69     // TClonesArray *Cluster; ///< clusters (if stored)
70    
71 pam-fi 1.1 public:
72    
73     PamTrack();
74 pam-fi 1.10 PamTrack(TrkTrack* , CaloTrkVar* , ToFTrkVar* );
75     PamTrack(const PamTrack&);
76     ~PamTrack(){ Delete(); };
77 pam-fi 1.1
78 pam-fi 1.10 void Clear();
79     void Clear(Option_t *option){Clear();};
80     void Delete();
81 pam-fi 1.1
82 mocchiut 1.27 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 pam-fi 1.10 TrkTrack* GetTrkTrack(){return trk_track;};
90 pam-fi 1.8 CaloTrkVar* GetCaloTrack(){return calo_track;};
91 pam-fi 1.10 ToFTrkVar* GetToFTrack(){return tof_track;};
92 pam-fi 1.8
93 pam-fi 1.1 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 pam-fi 1.10 //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 pam-fi 1.1
106     private:
107    
108 pam-fi 1.13 // ------------------------------
109     // variables to retrieve run info
110     // ------------------------------
111 pam-fi 1.17 // 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 pam-fi 1.13 TChain* run_tree;
120     TTree* run_tree_clone;
121     TChain* sel_tree;
122     TTree* sel_tree_clone;
123 pam-fi 1.26
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 pam-fi 1.13 // ---------------------------------
130     // variables to retrieve level0 info
131     // ---------------------------------
132     TFile* l0_file;
133     TTree* l0_tree;
134     Int_t iroot;
135 mocchiut 1.16 Int_t prevshift; // to remember if any shift is needed to synchronize l0 and l2 data instead of calculating any time
136 mocchiut 1.29 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 pam-fi 1.13 // --------------------------------------------
138     // variables to store Level0 info (if required)
139     // --------------------------------------------
140     EventHeader* h0_obj;
141     TrkLevel0* trk0_obj;
142 pam-fi 1.17 CaloLevel0* calo0_obj;
143 pam-fi 1.13
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 mocchiut 1.18
158 pam-fi 1.13 // --------------------------------------------
159     // variables to store Level0 info (if required)
160     // --------------------------------------------
161 pam-fi 1.6 TrkLevel1* trk1_obj;
162     TrkLevel2* trk2_obj;
163     TrkHough* trkh_obj;
164     CaloLevel1* calo1_obj;
165     CaloLevel2* calo2_obj;
166 pam-fi 1.2 ToFLevel2* tof_obj;
167     TrigLevel2* trig_obj;
168     S4Level2* s4_obj;
169     NDLevel2* nd_obj;
170     AcLevel2* ac_obj;
171 pam-fi 1.6 OrbitalInfo* orb_obj;
172     GL_RUN* run_obj;
173 mocchiut 1.11 SoftInfo* soft_obj; // Emiliano
174 pam-fi 1.10
175 pam-fi 1.13 // -----------------------------------
176     // variables to sort the track
177     // -----------------------------------
178 pam-fi 1.10 TClonesArray *tsorted;
179     TClonesArray *timage;
180     PamTrack *track; //store the last required
181 mocchiut 1.20 TString howtosort;
182     Float_t sortthr;
183 pam-fi 1.7
184 pam-fi 1.13 // -----
185     // flags
186     // -----
187 pam-fi 1.6 Bool_t CAL2; //level2 branch
188     Bool_t CAL1; //level1 branch
189 pam-fi 1.13 Bool_t CAL0; //yoda
190 pam-fi 1.6
191     Bool_t TRK2; //level2 branch
192     Bool_t TRK1; //level1 branch
193     Bool_t TRKh; //hough branch
194 pam-fi 1.13 Bool_t TRK0; //yoda
195    
196     Bool_t TOF;
197     Bool_t TOF0;
198 pam-fi 1.6
199     Bool_t TRG;
200     Bool_t S4;
201     Bool_t ND;
202     Bool_t AC;
203     Bool_t ORB;
204 pam-fi 1.9
205     Bool_t RUN;
206 pam-fi 1.13
207 pam-fi 1.25 Bool_t ISGP; //GP simulation
208    
209    
210 pam-fi 1.13 Int_t SELLI; //trees of selected events (there is a selection list)
211    
212 mocchiut 1.18 void Initialize();
213    
214 pam-fi 1.13
215     public:
216 pam-fi 1.6
217 mocchiut 1.18 PamLevel2(TString ddir,TString list,TString detlist);
218     PamLevel2(TString ddir,TString list);
219 pam-fi 1.1 PamLevel2();
220 pam-fi 1.10 ~PamLevel2(){Delete();};
221 pam-fi 1.2
222 pam-fi 1.6 void Clear();
223 mocchiut 1.18 void Reset();
224 pam-fi 1.10 void Delete();
225 pam-fi 1.2
226 mocchiut 1.12
227 pam-fi 1.13 // =============================================
228     // methods needed to read/write Level0-1-2 trees
229     // =============================================
230 pam-fi 1.6 void SetWhichTrees(TString);
231 pam-fi 1.8 void GetWhichTrees(TFile*);
232    
233     TTree* GetPamTree(TFile*,TString);
234 pam-fi 1.26 TTree* GetPamTree(TFile* f){return GetPamTree(f,"");};
235 pam-fi 1.8
236 pam-fi 1.6 TList* GetListOfLevel2Files(TString, TString);
237     Bool_t CheckLevel2File(TString);
238     TChain* GetPamTree(TList*,TString);
239 pam-fi 1.8 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 pam-fi 1.26 TChain* AddFriend(TString);
242 pam-fi 1.8
243 pam-fi 1.6 TTree* GetRunTree(TFile*);
244     TChain* GetRunTree(TList*);
245 mocchiut 1.12 TChain* GetRunTree(TString ddir,TString list){ return GetRunTree(GetListOfLevel2Files(ddir,list)); };
246 pam-fi 1.28 Bool_t UpdateRunInfo(Long64_t);//{ return UpdateRunInfo(run_tree,iev); };
247 pam-fi 1.17 Bool_t UpdateRunInfo(TTree *,Long64_t);
248     Bool_t UpdateRunInfo(TChain *,Long64_t);
249 pam-fi 1.7
250 pam-fi 1.8 void CreateCloneTrees0(TChain *fChain, TFile* file);
251     void CreateCloneTrees(TFile* file);
252 pam-fi 1.23 void CreateCloneTrees(){CreateCloneTrees(NULL);};
253 pam-fi 1.7 void FillCloneTrees();
254     TTree *GetCloneTree(TString);
255     void WriteCloneTrees();
256    
257 pam-fi 1.6 void SetBranchAddress(TTree *);
258     void SetBranchAddress(TChain *);
259    
260 pam-fi 1.17 // Int_t GetEntry(Int_t);
261     Int_t GetEntry(Long64_t);
262 pam-fi 1.13 Int_t GetYodaEntry();
263 mocchiut 1.21
264 mocchiut 1.29 void SetMaxShift(Int_t sh){ maxshift = sh; return;}; // EMILIANO method to change the maxshift variable
265    
266 mocchiut 1.21 Long64_t GetEntries(){return pam_tree->GetEntries();};
267 pam-fi 1.13 TChain* GetPamTree(){return pam_tree;};
268     TChain* GetRunTree(){return run_tree;};
269     TTree* GetYodaTree();
270    
271 mocchiut 1.16 TFile* GetYodaFile(){return l0_file;}; // can be useful to know the name of level0 file we are using or similar things
272    
273 pam-fi 1.13 // =============
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 pam-fi 1.24 TSQLServer* GetSQLServer(){return dbc;};
280     Bool_t SetDBConnection();
281 pam-fi 1.13
282 pam-fi 1.10 // ========================================================
283     // methods needed to retrieve subdetector general variables
284     // ========================================================
285 pam-fi 1.6 void* GetPointerTo(const char*);
286 pam-fi 1.15 EventHeader *GetEventHeader() { return h0_obj; };
287 pam-fi 1.24
288     /* TrkLevel0 *GetTrkLevel0() { return trk0_obj; }; */
289     /* CaloLevel0 *GetCaloLevel0() { return calo0_obj; }; */
290     TrkLevel0 *GetTrkLevel0();
291     CaloLevel0 *GetCaloLevel0();
292    
293 pam-fi 1.13
294     TrkLevel1 *GetTrkLevel1() { return trk1_obj; };
295     TrkLevel2 *GetTrkLevel2() { return trk2_obj; };
296     TrkHough *GetTrkHough() { return trkh_obj; };
297 pam-fi 1.10 CaloLevel1 *GetCaloLevel1() { return calo1_obj;};
298     CaloLevel2 *GetCaloLevel2() { return calo2_obj;};
299 pam-fi 1.13 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 mocchiut 1.11 SoftInfo *GetSoftInfo() { return soft_obj; }; // Emiliano
307 pam-fi 1.3
308     // ==============================================
309     // methods to retrieve subdetectors stored tracks
310     // ==============================================
311 pam-fi 1.10 TrkTrack* GetTrkStoredTrack(int seqno){return trk2_obj->TrkLevel2::GetStoredTrack(seqno); };
312 pam-fi 1.6 CaloTrkVar* GetCaloStoredTrack(int);
313     ToFTrkVar* GetToFStoredTrack(int);
314     //
315     PamTrack* GetPamTrackAlong(TrkTrack*);
316 pam-fi 1.3 // PamTrack* GetPamTrackAlong(CaloTrkVar*); //se serve
317     // PamTrack* GetPamTrackAlong(ToFTrkVar*); //se serve
318    
319 pam-fi 1.1 // =================================
320     // methods to retrieve pamela tracks
321     // =================================
322 pam-fi 1.3 PamTrack* GetStoredTrack(Int_t);
323 pam-fi 1.6 //
324     void SortTracks(TString); //assign value to variable sorted_tracks
325 mocchiut 1.20 void SortTracks(); //assign value to variable sorted_tracks
326 pam-fi 1.10 // TRefArray* GetTracks(); //return sorted_tracks
327     TClonesArray* GetTracks(); //return sorted_tracks
328 pam-fi 1.6 PamTrack* GetTrack(int);
329 pam-fi 1.1 PamTrack* GetTrackImage(int);
330 mocchiut 1.20 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 pam-fi 1.2
335 pam-fi 1.6 // =================================
336     // other methods
337     // =================================
338 pam-fi 1.10 // Int_t ntrk(){ return trk2_obj->TrkLevel2::ntrk(); };
339 pam-fi 1.6
340 pamela 1.14 // -----
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 mocchiut 1.22 Bool_t IsGood();
364    
365 pamela 1.14 Int_t IsSELLI(){return SELLI;}; //trees of selected events (there is a selection list)
366 pam-fi 1.6
367 pam-fi 1.25 Bool_t IsGP(){return ISGP;};
368    
369     void SetGP(Bool_t tt){ISGP=tt;};
370    
371    
372 pam-fi 1.1 ClassDef(PamLevel2,1);
373     };
374    
375     //===============================================================================================
376     //
377     //
378     //
379     //
380     //===============================================================================================
381    
382    
383     #endif
384    

  ViewVC Help
Powered by ViewVC 1.1.23