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

Annotation of /PamelaLevel2/inc/PamLevel2.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.26 - (hide annotations) (download)
Wed Sep 12 08:13:59 2007 UTC (17 years, 2 months ago) by pam-fi
Branch: MAIN
Changes since 1.25: +12 -2 lines
File MIME type: text/plain
fixed bug in live/dead time evaluation

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    
66 pam-fi 1.10 bool candeleteobj;
67    
68     // TClonesArray *Cluster; ///< clusters (if stored)
69    
70 pam-fi 1.1 public:
71    
72     PamTrack();
73 pam-fi 1.10 PamTrack(TrkTrack* , CaloTrkVar* , ToFTrkVar* );
74     PamTrack(const PamTrack&);
75     ~PamTrack(){ Delete(); };
76 pam-fi 1.1
77 pam-fi 1.10 void Clear();
78     void Clear(Option_t *option){Clear();};
79     void Delete();
80 pam-fi 1.1
81 pam-fi 1.10 TrkTrack* GetTrkTrack(){return trk_track;};
82 pam-fi 1.8 CaloTrkVar* GetCaloTrack(){return calo_track;};
83 pam-fi 1.10 ToFTrkVar* GetToFTrack(){return tof_track;};
84 pam-fi 1.8
85 pam-fi 1.1 ClassDef(PamTrack,1);
86     };
87    
88     /**
89     * \brief Class to describe PAMELA LEVEL2 data.
90     *
91     * This class inherites from TrkLevel2, CaloLevel2 ecc... and it overrides the TrkLevel2:GetTrack(int it) and TrkLevel2:GetTrackImage(int it) methods.
92     * This allows to solve the tracker ambiguity (that is, to choose between track images) by using also information from other detectors.
93     */
94    
95 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 {
96     class PamLevel2 : public TObject {
97 pam-fi 1.1
98     private:
99    
100 pam-fi 1.13 // ------------------------------
101     // variables to retrieve run info
102     // ------------------------------
103 pam-fi 1.17 // Int_t irun; //current run entry, relative to the TChain
104     Long64_t irun; //current run entry, relative to the TChain
105     // ULong64_t runfirstentry; //first entry of run, relative to the TChain
106     // ULong64_t runlastentry; //last entry of run, relative to the TChain
107     // Int_t irunentry; //position of current entry, relative to the run
108     Long64_t runfirstentry; //first entry of run, relative to the TChain
109     Long64_t runlastentry; //last entry of run, relative to the TChain
110     Long64_t irunentry; //position of current entry, relative to the run
111 pam-fi 1.13 TChain* run_tree;
112     TTree* run_tree_clone;
113     TChain* sel_tree;
114     TTree* sel_tree_clone;
115 pam-fi 1.26
116     // -------------------------------------------
117     // variables to store total live and dead time
118     // -------------------------------------------
119     ULong64_t totdltime[3];// 0=live 1=dead 2=n.events
120    
121 pam-fi 1.13 // ---------------------------------
122     // variables to retrieve level0 info
123     // ---------------------------------
124     TFile* l0_file;
125     TTree* l0_tree;
126     Int_t iroot;
127 mocchiut 1.16 Int_t prevshift; // to remember if any shift is needed to synchronize l0 and l2 data instead of calculating any time
128 pam-fi 1.13 // --------------------------------------------
129     // variables to store Level0 info (if required)
130     // --------------------------------------------
131     EventHeader* h0_obj;
132     TrkLevel0* trk0_obj;
133 pam-fi 1.17 CaloLevel0* calo0_obj;
134 pam-fi 1.13
135     // ---------------------------
136     // variables to connect the DB
137     // ---------------------------
138     TSQLServer* dbc;
139     TString host;
140     TString user;
141     TString psw;
142    
143     // ---------------------------------------------
144     // variables to retrieve and clone level1-2 info
145     // ---------------------------------------------
146     TChain* pam_tree;
147     TTree* pam_tree_clone[NCLONES];
148 mocchiut 1.18
149 pam-fi 1.13 // --------------------------------------------
150     // variables to store Level0 info (if required)
151     // --------------------------------------------
152 pam-fi 1.6 TrkLevel1* trk1_obj;
153     TrkLevel2* trk2_obj;
154     TrkHough* trkh_obj;
155     CaloLevel1* calo1_obj;
156     CaloLevel2* calo2_obj;
157 pam-fi 1.2 ToFLevel2* tof_obj;
158     TrigLevel2* trig_obj;
159     S4Level2* s4_obj;
160     NDLevel2* nd_obj;
161     AcLevel2* ac_obj;
162 pam-fi 1.6 OrbitalInfo* orb_obj;
163     GL_RUN* run_obj;
164 mocchiut 1.11 SoftInfo* soft_obj; // Emiliano
165 pam-fi 1.10
166 pam-fi 1.13 // -----------------------------------
167     // variables to sort the track
168     // -----------------------------------
169 pam-fi 1.10 TClonesArray *tsorted;
170     TClonesArray *timage;
171     PamTrack *track; //store the last required
172 mocchiut 1.20 TString howtosort;
173     Float_t sortthr;
174 pam-fi 1.7
175 pam-fi 1.13 // -----
176     // flags
177     // -----
178 pam-fi 1.6 Bool_t CAL2; //level2 branch
179     Bool_t CAL1; //level1 branch
180 pam-fi 1.13 Bool_t CAL0; //yoda
181 pam-fi 1.6
182     Bool_t TRK2; //level2 branch
183     Bool_t TRK1; //level1 branch
184     Bool_t TRKh; //hough branch
185 pam-fi 1.13 Bool_t TRK0; //yoda
186    
187     Bool_t TOF;
188     Bool_t TOF0;
189 pam-fi 1.6
190     Bool_t TRG;
191     Bool_t S4;
192     Bool_t ND;
193     Bool_t AC;
194     Bool_t ORB;
195 pam-fi 1.9
196     Bool_t RUN;
197 pam-fi 1.13
198 pam-fi 1.25 Bool_t ISGP; //GP simulation
199    
200    
201 pam-fi 1.13 Int_t SELLI; //trees of selected events (there is a selection list)
202    
203 mocchiut 1.18 void Initialize();
204    
205 pam-fi 1.13
206     public:
207 pam-fi 1.6
208 mocchiut 1.18 PamLevel2(TString ddir,TString list,TString detlist);
209     PamLevel2(TString ddir,TString list);
210 pam-fi 1.1 PamLevel2();
211 pam-fi 1.10 ~PamLevel2(){Delete();};
212 pam-fi 1.2
213 pam-fi 1.6 void Clear();
214 mocchiut 1.18 void Reset();
215 pam-fi 1.10 void Delete();
216 pam-fi 1.2
217 mocchiut 1.12
218 pam-fi 1.13 // =============================================
219     // methods needed to read/write Level0-1-2 trees
220     // =============================================
221 pam-fi 1.6 void SetWhichTrees(TString);
222 pam-fi 1.8 void GetWhichTrees(TFile*);
223    
224     TTree* GetPamTree(TFile*,TString);
225 pam-fi 1.26 TTree* GetPamTree(TFile* f){return GetPamTree(f,"");};
226 pam-fi 1.8
227 pam-fi 1.6 TList* GetListOfLevel2Files(TString, TString);
228     Bool_t CheckLevel2File(TString);
229     TChain* GetPamTree(TList*,TString);
230 pam-fi 1.8 TChain* GetPamTree(TString ddir,TString list,TString detlist){ return GetPamTree(GetListOfLevel2Files(ddir,list),detlist); };
231     TChain* GetPamTree(TString ddir,TString list){ return GetPamTree(GetListOfLevel2Files(ddir,list),""); };
232 pam-fi 1.26 TChain* AddFriend(TString);
233 pam-fi 1.8
234 pam-fi 1.6 TTree* GetRunTree(TFile*);
235     TChain* GetRunTree(TList*);
236 mocchiut 1.12 TChain* GetRunTree(TString ddir,TString list){ return GetRunTree(GetListOfLevel2Files(ddir,list)); };
237 pam-fi 1.17 Bool_t UpdateRunInfo(TTree *,Long64_t);
238     Bool_t UpdateRunInfo(TChain *,Long64_t);
239 pam-fi 1.19 Bool_t UpdateRunInfo(Long64_t iev);//{ return UpdateRunInfo(run_tree,iev); };
240 pam-fi 1.7
241 pam-fi 1.8 void CreateCloneTrees0(TChain *fChain, TFile* file);
242     void CreateCloneTrees(TFile* file);
243 pam-fi 1.23 void CreateCloneTrees(){CreateCloneTrees(NULL);};
244 pam-fi 1.7 void FillCloneTrees();
245     TTree *GetCloneTree(TString);
246     void WriteCloneTrees();
247    
248 pam-fi 1.6 void SetBranchAddress(TTree *);
249     void SetBranchAddress(TChain *);
250    
251 pam-fi 1.17 // Int_t GetEntry(Int_t);
252     Int_t GetEntry(Long64_t);
253 pam-fi 1.13 Int_t GetYodaEntry();
254 mocchiut 1.21
255     Long64_t GetEntries(){return pam_tree->GetEntries();};
256 pam-fi 1.13 TChain* GetPamTree(){return pam_tree;};
257     TChain* GetRunTree(){return run_tree;};
258     TTree* GetYodaTree();
259    
260 mocchiut 1.16 TFile* GetYodaFile(){return l0_file;}; // can be useful to know the name of level0 file we are using or similar things
261    
262 pam-fi 1.13 // =============
263     // DB connection
264     // =============
265     void SetDBHost(TString str){host=str;};
266     void SetDBUser(TString str){user=str;};
267     void SetDBPsw(TString str){psw=str;};
268 pam-fi 1.24 TSQLServer* GetSQLServer(){return dbc;};
269     Bool_t SetDBConnection();
270 pam-fi 1.13
271 pam-fi 1.10 // ========================================================
272     // methods needed to retrieve subdetector general variables
273     // ========================================================
274 pam-fi 1.6 void* GetPointerTo(const char*);
275 pam-fi 1.15 EventHeader *GetEventHeader() { return h0_obj; };
276 pam-fi 1.24
277     /* TrkLevel0 *GetTrkLevel0() { return trk0_obj; }; */
278     /* CaloLevel0 *GetCaloLevel0() { return calo0_obj; }; */
279     TrkLevel0 *GetTrkLevel0();
280     CaloLevel0 *GetCaloLevel0();
281    
282 pam-fi 1.13
283     TrkLevel1 *GetTrkLevel1() { return trk1_obj; };
284     TrkLevel2 *GetTrkLevel2() { return trk2_obj; };
285     TrkHough *GetTrkHough() { return trkh_obj; };
286 pam-fi 1.10 CaloLevel1 *GetCaloLevel1() { return calo1_obj;};
287     CaloLevel2 *GetCaloLevel2() { return calo2_obj;};
288 pam-fi 1.13 ToFLevel2 *GetToFLevel2() { return tof_obj; };
289     TrigLevel2 *GetTrigLevel2() { return trig_obj; };
290     S4Level2 *GetS4Level2() { return s4_obj; };
291     NDLevel2 *GetNDLevel2() { return nd_obj; };
292     AcLevel2 *GetAcLevel2() { return ac_obj; };
293     OrbitalInfo *GetOrbitalInfo(){ return orb_obj; };
294     GL_RUN *GetRunInfo() { return run_obj; };
295 mocchiut 1.11 SoftInfo *GetSoftInfo() { return soft_obj; }; // Emiliano
296 pam-fi 1.3
297     // ==============================================
298     // methods to retrieve subdetectors stored tracks
299     // ==============================================
300 pam-fi 1.10 TrkTrack* GetTrkStoredTrack(int seqno){return trk2_obj->TrkLevel2::GetStoredTrack(seqno); };
301 pam-fi 1.6 CaloTrkVar* GetCaloStoredTrack(int);
302     ToFTrkVar* GetToFStoredTrack(int);
303     //
304     PamTrack* GetPamTrackAlong(TrkTrack*);
305 pam-fi 1.3 // PamTrack* GetPamTrackAlong(CaloTrkVar*); //se serve
306     // PamTrack* GetPamTrackAlong(ToFTrkVar*); //se serve
307    
308 pam-fi 1.1 // =================================
309     // methods to retrieve pamela tracks
310     // =================================
311 pam-fi 1.3 PamTrack* GetStoredTrack(Int_t);
312 pam-fi 1.6 //
313     void SortTracks(TString); //assign value to variable sorted_tracks
314 mocchiut 1.20 void SortTracks(); //assign value to variable sorted_tracks
315 pam-fi 1.10 // TRefArray* GetTracks(); //return sorted_tracks
316     TClonesArray* GetTracks(); //return sorted_tracks
317 pam-fi 1.6 PamTrack* GetTrack(int);
318 pam-fi 1.1 PamTrack* GetTrackImage(int);
319 mocchiut 1.20 void SetSortingMethod(TString how){ howtosort = how; return;};
320     TString GetSortingMethod(){return howtosort;};
321     void SetNucleiSortingThreshold(Float_t nucleithr){ sortthr = nucleithr; return;};
322     Float_t GetNucleiSortingThreshold(){ return sortthr;};
323 pam-fi 1.2
324 pam-fi 1.6 // =================================
325     // other methods
326     // =================================
327 pam-fi 1.10 // Int_t ntrk(){ return trk2_obj->TrkLevel2::ntrk(); };
328 pam-fi 1.6
329 pamela 1.14 // -----
330     // flags methods
331     // -----
332     Bool_t IsCAL2(){return CAL2;}; //level2 branch
333     Bool_t IsCAL1(){return CAL1;}; //level1 branch
334     Bool_t IsCAL0(){return CAL0;}; //yoda
335    
336     Bool_t IsTRK2(){return TRK2;}; //level2 branch
337     Bool_t IsTRK1(){return TRK1;}; //level1 branch
338     Bool_t IsTRKh(){return TRKh;}; //hough branch
339     Bool_t IsTRK0(){return TRK0;}; //yoda
340    
341     Bool_t IsTOF(){return TOF;};
342     Bool_t IsTOF0(){return TOF0;};
343    
344     Bool_t IsTRG(){return TRG;};
345     Bool_t IsS4(){return S4;};
346     Bool_t IsND(){return ND;};
347     Bool_t IsAC(){return AC;};
348     Bool_t IsORB(){return ORB;};
349    
350     Bool_t IsRUN(){return RUN;};
351    
352 mocchiut 1.22 Bool_t IsGood();
353    
354 pamela 1.14 Int_t IsSELLI(){return SELLI;}; //trees of selected events (there is a selection list)
355 pam-fi 1.6
356 pam-fi 1.25 Bool_t IsGP(){return ISGP;};
357    
358     void SetGP(Bool_t tt){ISGP=tt;};
359    
360    
361 pam-fi 1.1 ClassDef(PamLevel2,1);
362     };
363    
364     //===============================================================================================
365     //
366     //
367     //
368     //
369     //===============================================================================================
370    
371    
372     #endif
373    

  ViewVC Help
Powered by ViewVC 1.1.23