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

Contents of /PamelaLevel2/inc/PamLevel2.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.25 - (show annotations) (download)
Fri Aug 17 16:57:12 2007 UTC (17 years, 3 months ago) by pam-fi
Branch: MAIN
CVS Tags: v4r00
Changes since 1.24: +8 -0 lines
File MIME type: text/plain
modified to work also with simulation

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 <TFile.h>
35 #include <TList.h>
36 #include <TKey.h>
37 #include <TSystemFile.h>
38 #include <TSystemDirectory.h>
39 #include <TSQLServer.h>
40
41 #include <iostream>
42
43 #define NCLONES 10
44
45 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 //class PamTrack : public TrkTrack, public CaloTrkVar, public ToFTrkVar {
54 class PamTrack : public TObject {
55
56 private:
57
58 TrkTrack* trk_track;
59 CaloTrkVar* calo_track;
60 ToFTrkVar* tof_track;
61
62 bool candeleteobj;
63
64 // TClonesArray *Cluster; ///< clusters (if stored)
65
66 public:
67
68 PamTrack();
69 PamTrack(TrkTrack* , CaloTrkVar* , ToFTrkVar* );
70 PamTrack(const PamTrack&);
71 ~PamTrack(){ Delete(); };
72
73 void Clear();
74 void Clear(Option_t *option){Clear();};
75 void Delete();
76
77 TrkTrack* GetTrkTrack(){return trk_track;};
78 CaloTrkVar* GetCaloTrack(){return calo_track;};
79 ToFTrkVar* GetToFTrack(){return tof_track;};
80
81 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 //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
94 private:
95
96 // ------------------------------
97 // variables to retrieve run info
98 // ------------------------------
99 // 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 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 Int_t prevshift; // to remember if any shift is needed to synchronize l0 and l2 data instead of calculating any time
119 // --------------------------------------------
120 // variables to store Level0 info (if required)
121 // --------------------------------------------
122 EventHeader* h0_obj;
123 TrkLevel0* trk0_obj;
124 CaloLevel0* calo0_obj;
125
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
140 // --------------------------------------------
141 // variables to store Level0 info (if required)
142 // --------------------------------------------
143 TrkLevel1* trk1_obj;
144 TrkLevel2* trk2_obj;
145 TrkHough* trkh_obj;
146 CaloLevel1* calo1_obj;
147 CaloLevel2* calo2_obj;
148 ToFLevel2* tof_obj;
149 TrigLevel2* trig_obj;
150 S4Level2* s4_obj;
151 NDLevel2* nd_obj;
152 AcLevel2* ac_obj;
153 OrbitalInfo* orb_obj;
154 GL_RUN* run_obj;
155 SoftInfo* soft_obj; // Emiliano
156
157 // -----------------------------------
158 // variables to sort the track
159 // -----------------------------------
160 TClonesArray *tsorted;
161 TClonesArray *timage;
162 PamTrack *track; //store the last required
163 TString howtosort;
164 Float_t sortthr;
165
166 // -----
167 // flags
168 // -----
169 Bool_t CAL2; //level2 branch
170 Bool_t CAL1; //level1 branch
171 Bool_t CAL0; //yoda
172
173 Bool_t TRK2; //level2 branch
174 Bool_t TRK1; //level1 branch
175 Bool_t TRKh; //hough branch
176 Bool_t TRK0; //yoda
177
178 Bool_t TOF;
179 Bool_t TOF0;
180
181 Bool_t TRG;
182 Bool_t S4;
183 Bool_t ND;
184 Bool_t AC;
185 Bool_t ORB;
186
187 Bool_t RUN;
188
189 Bool_t ISGP; //GP simulation
190
191
192 Int_t SELLI; //trees of selected events (there is a selection list)
193
194 void Initialize();
195
196
197 public:
198
199 PamLevel2(TString ddir,TString list,TString detlist);
200 PamLevel2(TString ddir,TString list);
201 PamLevel2();
202 ~PamLevel2(){Delete();};
203
204 void Clear();
205 void Reset();
206 void Delete();
207
208
209 // =============================================
210 // methods needed to read/write Level0-1-2 trees
211 // =============================================
212 void SetWhichTrees(TString);
213 void GetWhichTrees(TFile*);
214
215 TTree* GetPamTree(TFile*,TString);
216 TTree* GetPamTree(TFile* f){return GetPamTree(f,"");};
217
218 TList* GetListOfLevel2Files(TString, TString);
219 Bool_t CheckLevel2File(TString);
220 TChain* GetPamTree(TList*,TString);
221 TChain* GetPamTree(TString ddir,TString list,TString detlist){ return GetPamTree(GetListOfLevel2Files(ddir,list),detlist); };
222 TChain* GetPamTree(TString ddir,TString list){ return GetPamTree(GetListOfLevel2Files(ddir,list),""); };
223
224 TTree* GetRunTree(TFile*);
225 TChain* GetRunTree(TList*);
226 TChain* GetRunTree(TString ddir,TString list){ return GetRunTree(GetListOfLevel2Files(ddir,list)); };
227 Bool_t UpdateRunInfo(TTree *,Long64_t);
228 Bool_t UpdateRunInfo(TChain *,Long64_t);
229 Bool_t UpdateRunInfo(Long64_t iev);//{ return UpdateRunInfo(run_tree,iev); };
230
231 void CreateCloneTrees0(TChain *fChain, TFile* file);
232 void CreateCloneTrees(TFile* file);
233 void CreateCloneTrees(){CreateCloneTrees(NULL);};
234 void FillCloneTrees();
235 TTree *GetCloneTree(TString);
236 void WriteCloneTrees();
237
238 void SetBranchAddress(TTree *);
239 void SetBranchAddress(TChain *);
240
241 // Int_t GetEntry(Int_t);
242 Int_t GetEntry(Long64_t);
243 Int_t GetYodaEntry();
244
245 Long64_t GetEntries(){return pam_tree->GetEntries();};
246 TChain* GetPamTree(){return pam_tree;};
247 TChain* GetRunTree(){return run_tree;};
248 TTree* GetYodaTree();
249
250 TFile* GetYodaFile(){return l0_file;}; // can be useful to know the name of level0 file we are using or similar things
251
252 // =============
253 // DB connection
254 // =============
255 void SetDBHost(TString str){host=str;};
256 void SetDBUser(TString str){user=str;};
257 void SetDBPsw(TString str){psw=str;};
258 TSQLServer* GetSQLServer(){return dbc;};
259 Bool_t SetDBConnection();
260
261 // ========================================================
262 // methods needed to retrieve subdetector general variables
263 // ========================================================
264 void* GetPointerTo(const char*);
265 EventHeader *GetEventHeader() { return h0_obj; };
266
267 /* TrkLevel0 *GetTrkLevel0() { return trk0_obj; }; */
268 /* CaloLevel0 *GetCaloLevel0() { return calo0_obj; }; */
269 TrkLevel0 *GetTrkLevel0();
270 CaloLevel0 *GetCaloLevel0();
271
272
273 TrkLevel1 *GetTrkLevel1() { return trk1_obj; };
274 TrkLevel2 *GetTrkLevel2() { return trk2_obj; };
275 TrkHough *GetTrkHough() { return trkh_obj; };
276 CaloLevel1 *GetCaloLevel1() { return calo1_obj;};
277 CaloLevel2 *GetCaloLevel2() { return calo2_obj;};
278 ToFLevel2 *GetToFLevel2() { return tof_obj; };
279 TrigLevel2 *GetTrigLevel2() { return trig_obj; };
280 S4Level2 *GetS4Level2() { return s4_obj; };
281 NDLevel2 *GetNDLevel2() { return nd_obj; };
282 AcLevel2 *GetAcLevel2() { return ac_obj; };
283 OrbitalInfo *GetOrbitalInfo(){ return orb_obj; };
284 GL_RUN *GetRunInfo() { return run_obj; };
285 SoftInfo *GetSoftInfo() { return soft_obj; }; // Emiliano
286
287 // ==============================================
288 // methods to retrieve subdetectors stored tracks
289 // ==============================================
290 TrkTrack* GetTrkStoredTrack(int seqno){return trk2_obj->TrkLevel2::GetStoredTrack(seqno); };
291 CaloTrkVar* GetCaloStoredTrack(int);
292 ToFTrkVar* GetToFStoredTrack(int);
293 //
294 PamTrack* GetPamTrackAlong(TrkTrack*);
295 // PamTrack* GetPamTrackAlong(CaloTrkVar*); //se serve
296 // PamTrack* GetPamTrackAlong(ToFTrkVar*); //se serve
297
298 // =================================
299 // methods to retrieve pamela tracks
300 // =================================
301 PamTrack* GetStoredTrack(Int_t);
302 //
303 void SortTracks(TString); //assign value to variable sorted_tracks
304 void SortTracks(); //assign value to variable sorted_tracks
305 // TRefArray* GetTracks(); //return sorted_tracks
306 TClonesArray* GetTracks(); //return sorted_tracks
307 PamTrack* GetTrack(int);
308 PamTrack* GetTrackImage(int);
309 void SetSortingMethod(TString how){ howtosort = how; return;};
310 TString GetSortingMethod(){return howtosort;};
311 void SetNucleiSortingThreshold(Float_t nucleithr){ sortthr = nucleithr; return;};
312 Float_t GetNucleiSortingThreshold(){ return sortthr;};
313
314 // =================================
315 // other methods
316 // =================================
317 // Int_t ntrk(){ return trk2_obj->TrkLevel2::ntrk(); };
318
319 // -----
320 // flags methods
321 // -----
322 Bool_t IsCAL2(){return CAL2;}; //level2 branch
323 Bool_t IsCAL1(){return CAL1;}; //level1 branch
324 Bool_t IsCAL0(){return CAL0;}; //yoda
325
326 Bool_t IsTRK2(){return TRK2;}; //level2 branch
327 Bool_t IsTRK1(){return TRK1;}; //level1 branch
328 Bool_t IsTRKh(){return TRKh;}; //hough branch
329 Bool_t IsTRK0(){return TRK0;}; //yoda
330
331 Bool_t IsTOF(){return TOF;};
332 Bool_t IsTOF0(){return TOF0;};
333
334 Bool_t IsTRG(){return TRG;};
335 Bool_t IsS4(){return S4;};
336 Bool_t IsND(){return ND;};
337 Bool_t IsAC(){return AC;};
338 Bool_t IsORB(){return ORB;};
339
340 Bool_t IsRUN(){return RUN;};
341
342 Bool_t IsGood();
343
344 Int_t IsSELLI(){return SELLI;}; //trees of selected events (there is a selection list)
345
346 Bool_t IsGP(){return ISGP;};
347
348 void SetGP(Bool_t tt){ISGP=tt;};
349
350
351 ClassDef(PamLevel2,1);
352 };
353
354 //===============================================================================================
355 //
356 //
357 //
358 //
359 //===============================================================================================
360
361
362 #endif
363

  ViewVC Help
Powered by ViewVC 1.1.23