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

Annotation of /PamelaLevel2/inc/PamLevel2.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.28 - (hide annotations) (download)
Wed Oct 24 08:41:23 2007 UTC (17 years, 1 month ago) by pam-fi
Branch: MAIN
Changes since 1.27: +1 -1 lines
File MIME type: text/plain
fixed bug in UpdateRunInfo(Long64_t) -- (run with 1 event were skipped)

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 pam-fi 1.13 // --------------------------------------------
137     // variables to store Level0 info (if required)
138     // --------------------------------------------
139     EventHeader* h0_obj;
140     TrkLevel0* trk0_obj;
141 pam-fi 1.17 CaloLevel0* calo0_obj;
142 pam-fi 1.13
143     // ---------------------------
144     // variables to connect the DB
145     // ---------------------------
146     TSQLServer* dbc;
147     TString host;
148     TString user;
149     TString psw;
150    
151     // ---------------------------------------------
152     // variables to retrieve and clone level1-2 info
153     // ---------------------------------------------
154     TChain* pam_tree;
155     TTree* pam_tree_clone[NCLONES];
156 mocchiut 1.18
157 pam-fi 1.13 // --------------------------------------------
158     // variables to store Level0 info (if required)
159     // --------------------------------------------
160 pam-fi 1.6 TrkLevel1* trk1_obj;
161     TrkLevel2* trk2_obj;
162     TrkHough* trkh_obj;
163     CaloLevel1* calo1_obj;
164     CaloLevel2* calo2_obj;
165 pam-fi 1.2 ToFLevel2* tof_obj;
166     TrigLevel2* trig_obj;
167     S4Level2* s4_obj;
168     NDLevel2* nd_obj;
169     AcLevel2* ac_obj;
170 pam-fi 1.6 OrbitalInfo* orb_obj;
171     GL_RUN* run_obj;
172 mocchiut 1.11 SoftInfo* soft_obj; // Emiliano
173 pam-fi 1.10
174 pam-fi 1.13 // -----------------------------------
175     // variables to sort the track
176     // -----------------------------------
177 pam-fi 1.10 TClonesArray *tsorted;
178     TClonesArray *timage;
179     PamTrack *track; //store the last required
180 mocchiut 1.20 TString howtosort;
181     Float_t sortthr;
182 pam-fi 1.7
183 pam-fi 1.13 // -----
184     // flags
185     // -----
186 pam-fi 1.6 Bool_t CAL2; //level2 branch
187     Bool_t CAL1; //level1 branch
188 pam-fi 1.13 Bool_t CAL0; //yoda
189 pam-fi 1.6
190     Bool_t TRK2; //level2 branch
191     Bool_t TRK1; //level1 branch
192     Bool_t TRKh; //hough branch
193 pam-fi 1.13 Bool_t TRK0; //yoda
194    
195     Bool_t TOF;
196     Bool_t TOF0;
197 pam-fi 1.6
198     Bool_t TRG;
199     Bool_t S4;
200     Bool_t ND;
201     Bool_t AC;
202     Bool_t ORB;
203 pam-fi 1.9
204     Bool_t RUN;
205 pam-fi 1.13
206 pam-fi 1.25 Bool_t ISGP; //GP simulation
207    
208    
209 pam-fi 1.13 Int_t SELLI; //trees of selected events (there is a selection list)
210    
211 mocchiut 1.18 void Initialize();
212    
213 pam-fi 1.13
214     public:
215 pam-fi 1.6
216 mocchiut 1.18 PamLevel2(TString ddir,TString list,TString detlist);
217     PamLevel2(TString ddir,TString list);
218 pam-fi 1.1 PamLevel2();
219 pam-fi 1.10 ~PamLevel2(){Delete();};
220 pam-fi 1.2
221 pam-fi 1.6 void Clear();
222 mocchiut 1.18 void Reset();
223 pam-fi 1.10 void Delete();
224 pam-fi 1.2
225 mocchiut 1.12
226 pam-fi 1.13 // =============================================
227     // methods needed to read/write Level0-1-2 trees
228     // =============================================
229 pam-fi 1.6 void SetWhichTrees(TString);
230 pam-fi 1.8 void GetWhichTrees(TFile*);
231    
232     TTree* GetPamTree(TFile*,TString);
233 pam-fi 1.26 TTree* GetPamTree(TFile* f){return GetPamTree(f,"");};
234 pam-fi 1.8
235 pam-fi 1.6 TList* GetListOfLevel2Files(TString, TString);
236     Bool_t CheckLevel2File(TString);
237     TChain* GetPamTree(TList*,TString);
238 pam-fi 1.8 TChain* GetPamTree(TString ddir,TString list,TString detlist){ return GetPamTree(GetListOfLevel2Files(ddir,list),detlist); };
239     TChain* GetPamTree(TString ddir,TString list){ return GetPamTree(GetListOfLevel2Files(ddir,list),""); };
240 pam-fi 1.26 TChain* AddFriend(TString);
241 pam-fi 1.8
242 pam-fi 1.6 TTree* GetRunTree(TFile*);
243     TChain* GetRunTree(TList*);
244 mocchiut 1.12 TChain* GetRunTree(TString ddir,TString list){ return GetRunTree(GetListOfLevel2Files(ddir,list)); };
245 pam-fi 1.28 Bool_t UpdateRunInfo(Long64_t);//{ return UpdateRunInfo(run_tree,iev); };
246 pam-fi 1.17 Bool_t UpdateRunInfo(TTree *,Long64_t);
247     Bool_t UpdateRunInfo(TChain *,Long64_t);
248 pam-fi 1.7
249 pam-fi 1.8 void CreateCloneTrees0(TChain *fChain, TFile* file);
250     void CreateCloneTrees(TFile* file);
251 pam-fi 1.23 void CreateCloneTrees(){CreateCloneTrees(NULL);};
252 pam-fi 1.7 void FillCloneTrees();
253     TTree *GetCloneTree(TString);
254     void WriteCloneTrees();
255    
256 pam-fi 1.6 void SetBranchAddress(TTree *);
257     void SetBranchAddress(TChain *);
258    
259 pam-fi 1.17 // Int_t GetEntry(Int_t);
260     Int_t GetEntry(Long64_t);
261 pam-fi 1.13 Int_t GetYodaEntry();
262 mocchiut 1.21
263     Long64_t GetEntries(){return pam_tree->GetEntries();};
264 pam-fi 1.13 TChain* GetPamTree(){return pam_tree;};
265     TChain* GetRunTree(){return run_tree;};
266     TTree* GetYodaTree();
267    
268 mocchiut 1.16 TFile* GetYodaFile(){return l0_file;}; // can be useful to know the name of level0 file we are using or similar things
269    
270 pam-fi 1.13 // =============
271     // DB connection
272     // =============
273     void SetDBHost(TString str){host=str;};
274     void SetDBUser(TString str){user=str;};
275     void SetDBPsw(TString str){psw=str;};
276 pam-fi 1.24 TSQLServer* GetSQLServer(){return dbc;};
277     Bool_t SetDBConnection();
278 pam-fi 1.13
279 pam-fi 1.10 // ========================================================
280     // methods needed to retrieve subdetector general variables
281     // ========================================================
282 pam-fi 1.6 void* GetPointerTo(const char*);
283 pam-fi 1.15 EventHeader *GetEventHeader() { return h0_obj; };
284 pam-fi 1.24
285     /* TrkLevel0 *GetTrkLevel0() { return trk0_obj; }; */
286     /* CaloLevel0 *GetCaloLevel0() { return calo0_obj; }; */
287     TrkLevel0 *GetTrkLevel0();
288     CaloLevel0 *GetCaloLevel0();
289    
290 pam-fi 1.13
291     TrkLevel1 *GetTrkLevel1() { return trk1_obj; };
292     TrkLevel2 *GetTrkLevel2() { return trk2_obj; };
293     TrkHough *GetTrkHough() { return trkh_obj; };
294 pam-fi 1.10 CaloLevel1 *GetCaloLevel1() { return calo1_obj;};
295     CaloLevel2 *GetCaloLevel2() { return calo2_obj;};
296 pam-fi 1.13 ToFLevel2 *GetToFLevel2() { return tof_obj; };
297     TrigLevel2 *GetTrigLevel2() { return trig_obj; };
298     S4Level2 *GetS4Level2() { return s4_obj; };
299     NDLevel2 *GetNDLevel2() { return nd_obj; };
300     AcLevel2 *GetAcLevel2() { return ac_obj; };
301     OrbitalInfo *GetOrbitalInfo(){ return orb_obj; };
302     GL_RUN *GetRunInfo() { return run_obj; };
303 mocchiut 1.11 SoftInfo *GetSoftInfo() { return soft_obj; }; // Emiliano
304 pam-fi 1.3
305     // ==============================================
306     // methods to retrieve subdetectors stored tracks
307     // ==============================================
308 pam-fi 1.10 TrkTrack* GetTrkStoredTrack(int seqno){return trk2_obj->TrkLevel2::GetStoredTrack(seqno); };
309 pam-fi 1.6 CaloTrkVar* GetCaloStoredTrack(int);
310     ToFTrkVar* GetToFStoredTrack(int);
311     //
312     PamTrack* GetPamTrackAlong(TrkTrack*);
313 pam-fi 1.3 // PamTrack* GetPamTrackAlong(CaloTrkVar*); //se serve
314     // PamTrack* GetPamTrackAlong(ToFTrkVar*); //se serve
315    
316 pam-fi 1.1 // =================================
317     // methods to retrieve pamela tracks
318     // =================================
319 pam-fi 1.3 PamTrack* GetStoredTrack(Int_t);
320 pam-fi 1.6 //
321     void SortTracks(TString); //assign value to variable sorted_tracks
322 mocchiut 1.20 void SortTracks(); //assign value to variable sorted_tracks
323 pam-fi 1.10 // TRefArray* GetTracks(); //return sorted_tracks
324     TClonesArray* GetTracks(); //return sorted_tracks
325 pam-fi 1.6 PamTrack* GetTrack(int);
326 pam-fi 1.1 PamTrack* GetTrackImage(int);
327 mocchiut 1.20 void SetSortingMethod(TString how){ howtosort = how; return;};
328     TString GetSortingMethod(){return howtosort;};
329     void SetNucleiSortingThreshold(Float_t nucleithr){ sortthr = nucleithr; return;};
330     Float_t GetNucleiSortingThreshold(){ return sortthr;};
331 pam-fi 1.2
332 pam-fi 1.6 // =================================
333     // other methods
334     // =================================
335 pam-fi 1.10 // Int_t ntrk(){ return trk2_obj->TrkLevel2::ntrk(); };
336 pam-fi 1.6
337 pamela 1.14 // -----
338     // flags methods
339     // -----
340     Bool_t IsCAL2(){return CAL2;}; //level2 branch
341     Bool_t IsCAL1(){return CAL1;}; //level1 branch
342     Bool_t IsCAL0(){return CAL0;}; //yoda
343    
344     Bool_t IsTRK2(){return TRK2;}; //level2 branch
345     Bool_t IsTRK1(){return TRK1;}; //level1 branch
346     Bool_t IsTRKh(){return TRKh;}; //hough branch
347     Bool_t IsTRK0(){return TRK0;}; //yoda
348    
349     Bool_t IsTOF(){return TOF;};
350     Bool_t IsTOF0(){return TOF0;};
351    
352     Bool_t IsTRG(){return TRG;};
353     Bool_t IsS4(){return S4;};
354     Bool_t IsND(){return ND;};
355     Bool_t IsAC(){return AC;};
356     Bool_t IsORB(){return ORB;};
357    
358     Bool_t IsRUN(){return RUN;};
359    
360 mocchiut 1.22 Bool_t IsGood();
361    
362 pamela 1.14 Int_t IsSELLI(){return SELLI;}; //trees of selected events (there is a selection list)
363 pam-fi 1.6
364 pam-fi 1.25 Bool_t IsGP(){return ISGP;};
365    
366     void SetGP(Bool_t tt){ISGP=tt;};
367    
368    
369 pam-fi 1.1 ClassDef(PamLevel2,1);
370     };
371    
372     //===============================================================================================
373     //
374     //
375     //
376     //
377     //===============================================================================================
378    
379    
380     #endif
381    

  ViewVC Help
Powered by ViewVC 1.1.23