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

Annotation of /PamelaLevel2/inc/PamLevel2.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.24 - (hide annotations) (download)
Fri May 25 13:38:50 2007 UTC (17 years, 6 months ago) by pam-fi
Branch: MAIN
Changes since 1.23: +8 -3 lines
File MIME type: text/plain
some upgrades

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

  ViewVC Help
Powered by ViewVC 1.1.23