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

Contents of /PamelaLevel2/inc/PamLevel2.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.54 - (show annotations) (download)
Tue Mar 24 09:15:00 2015 UTC (9 years, 8 months ago) by pam-fi
Branch: MAIN
CVS Tags: HEAD
Changes since 1.53: +6 -3 lines
File MIME type: text/plain
CVSk fixed

:: ----------------------------------------------------------------------

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 <InclinationInfo.h> // EMILIANO, now this library is included in libDarthVader.so
28 // and the header installed in $PAM_INC. If you get the
29 // error "Cannot find InclinationInfo.h" update your DV installation
30 #include <OrientationInfo.h> // EMILIANO, now this library is included in libDarthVader.so
31 // and the header installed in $PAM_INC. If you get the
32 // error "Cannot find InclinationInfo.h" update your DV installation
33 #include <RunInfo.h>
34 #include <GLTables.h>
35 #include <ExtTrack.h>
36
37
38 #include <TTree.h>
39 #include <TFriendElement.h>
40 #include <TChain.h>
41 #include <TChainElement.h>
42 #include <TFile.h>
43 #include <TTimeStamp.h>
44 #include <TList.h>
45 #include <TKey.h>
46 #include <TSystemFile.h>
47 #include <TSystemDirectory.h>
48 #include <TSQLServer.h>
49
50 #include <stdlib.h>
51 #include <iostream>
52 #include <iomanip>
53 using namespace std;
54
55 #define NCLONES 10
56
57 using namespace std;
58
59
60 /////////////////////////////////////////////////////////////////////////////
61 /////////////////////////////////////////////////////////////////////////////
62 /////////////////////////////////////////////////////////////////////////////
63 /////////////////////////////////////////////////////////////////////////////
64 /**
65 * \brief Class to describe GP output (to be moved to PamelaDigitizer)
66 *
67 */
68
69 class GPamela : public TObject {
70
71 private:
72
73 public:
74
75 // Declaration of leave types
76 Int_t Irun;
77 Int_t Ievnt;
78 Int_t Ipa;
79 Float_t X0;
80 Float_t Y0;
81 Float_t Z0;
82 Float_t Theta;
83 Float_t Phi;
84 Float_t P0;
85 Int_t Nthtof;
86 UChar_t Ipltof[100]; //[Nthtof]
87 UChar_t Ipaddle[100]; //[Nthtof]
88 UChar_t Ipartof[100]; //[Nthtof]
89 Float_t Xintof[100]; //[Nthtof]
90 Float_t Yintof[100]; //[Nthtof]
91 Float_t Zintof[100]; //[Nthtof]
92 Float_t Xouttof[100]; //[Nthtof]
93 Float_t Youttof[100]; //[Nthtof]
94 Float_t Zouttof[100]; //[Nthtof]
95 Float_t Ereltof[100]; //[Nthtof]
96 Float_t Timetof[100]; //[Nthtof]
97 Float_t Pathtof[100]; //[Nthtof]
98 Float_t P0tof[100]; //[Nthtof]
99 Int_t Nthcat;
100 UChar_t Iparcat[50]; //[Nthcat]
101 UChar_t Icat[50]; //[Nthcat]
102 Float_t Xincat[50]; //[Nthcat]
103 Float_t Yincat[50]; //[Nthcat]
104 Float_t Zincat[50]; //[Nthcat]
105 Float_t Xoutcat[50]; //[Nthcat]
106 Float_t Youtcat[50]; //[Nthcat]
107 Float_t Zoutcat[50]; //[Nthcat]
108 Float_t Erelcat[50]; //[Nthcat]
109 Float_t Timecat[50]; //[Nthcat]
110 Float_t Pathcat[50]; //[Nthcat]
111 Float_t P0cat[50]; //[Nthcat]
112 Int_t Nthcas;
113 UChar_t Iparcas[50]; //[Nthcas]
114 UChar_t Icas[50]; //[Nthcas]
115 Float_t Xincas[50]; //[Nthcas]
116 Float_t Yincas[50]; //[Nthcas]
117 Float_t Zincas[50]; //[Nthcas]
118 Float_t Xoutcas[50]; //[Nthcas]
119 Float_t Youtcas[50]; //[Nthcas]
120 Float_t Zoutcas[50]; //[Nthcas]
121 Float_t Erelcas[50]; //[Nthcas]
122 Float_t Timecas[50]; //[Nthcas]
123 Float_t Pathcas[50]; //[Nthcas]
124 Float_t P0cas[50]; //[Nthcas]
125 Int_t Nthspe;
126 UChar_t Iparspe[100]; //[Nthspe]
127 UChar_t Itrpb[100]; //[Nthspe]
128 UChar_t Itrsl[100]; //[Nthspe]
129 UChar_t Itspa[100]; //[Nthspe]
130 Float_t Xinspe[100]; //[Nthspe]
131 Float_t Yinspe[100]; //[Nthspe]
132 Float_t Zinspe[100]; //[Nthspe]
133 Float_t Xoutspe[100]; //[Nthspe]
134 Float_t Youtspe[100]; //[Nthspe]
135 Float_t Zoutspe[100]; //[Nthspe]
136 Float_t Xavspe[100]; //[Nthspe]
137 Float_t Yavspe[100]; //[Nthspe]
138 Float_t Zavspe[100]; //[Nthspe]
139 Float_t Erelspe[100]; //[Nthspe]
140 Float_t Pathspe[100]; //[Nthspe]
141 Float_t P0spe[100]; //[Nthspe]
142 UChar_t Nxmult[100]; //[Nthspe]
143 UChar_t Nymult[100]; //[Nthspe]
144 Int_t Nstrpx;
145 UChar_t Npstripx[1000]; //[Nstrpx]
146 UChar_t Ntstripx[1000]; //[Nstrpx]
147 UShort_t Istripx[1000]; //[Nstrpx]
148 //UInt_t Istripx[1000]; //[Nstrpx]
149 Float_t Qstripx[1000]; //[Nstrpx]
150 Float_t Xstripx[1000]; //[Nstrpx]
151 Int_t Nstrpy;
152 UChar_t Npstripy[1000]; //[Nstrpy]
153 UChar_t Ntstripy[1000]; //[Nstrpy]
154 UShort_t Istripy[1000]; //[Nstrpy]
155 //UInt_t Istripy[1000]; //[Nstrpy]
156 Float_t Qstripy[1000]; //[Nstrpy]
157 Float_t Ystripy[1000]; //[Nstrpy]
158 Int_t Nthcali;
159 UChar_t Icaplane[4224]; //[Nthcali]
160 UChar_t Icastrip[4224]; //[Nthcali]
161 Int_t Icamod[4224]; //[Nthcali]
162 Float_t Enestrip[4224]; //[Nthcali]
163 Int_t Nthcal;
164 UChar_t Icapl[1000]; //[Nthcal]
165 UChar_t Icasi[1000]; //[Nthcal]
166 UChar_t Icast[1000]; //[Nthcal]
167 Float_t Xincal[1000]; //[Nthcal]
168 Float_t Yincal[1000]; //[Nthcal]
169 Float_t Zincal[1000]; //[Nthcal]
170 Float_t Erelcal[1000]; //[Nthcal]
171 Int_t Nthnd;
172 UChar_t Itubend[200]; //[Nthnd]
173 UChar_t Iparnd[200]; //[Nthnd]
174 Float_t Xinnd[200]; //[Nthnd]
175 Float_t Yinnd[200]; //[Nthnd]
176 Float_t Zinnd[200]; //[Nthnd]
177 Float_t Xoutnd[200]; //[Nthnd]
178 Float_t Youtnd[200]; //[Nthnd]
179 Float_t Zoutnd[200]; //[Nthnd]
180 Float_t Erelnd[200]; //[Nthnd]
181 Float_t Timend[200]; //[Nthnd]
182 Float_t Pathnd[200]; //[Nthnd]
183 Float_t P0nd[200]; //[Nthnd]
184 Int_t Nthcard;
185 UChar_t Iparcard[100]; //[Nthcard]
186 UChar_t Icard[100]; //[Nthcard]
187 Float_t Xincard[100]; //[Nthcard]
188 Float_t Yincard[100]; //[Nthcard]
189 Float_t Zincard[100]; //[Nthcard]
190 Float_t Xoutcard[100]; //[Nthcard]
191 Float_t Youtcard[100]; //[Nthcard]
192 Float_t Zoutcard[100]; //[Nthcard]
193 Float_t Erelcard[100]; //[Nthcard]
194 Float_t Timecard[100]; //[Nthcard]
195 Float_t Pathcard[100]; //[Nthcard]
196 Float_t P0card[100]; //[Nthcard]
197
198 GPamela(){ Clear(); };
199 // ~GPamela(){ Delete(); };
200 ~GPamela(){ Clear(); };
201
202 void Clear();
203 void Delete();
204 void SetBranchAddress( TChain* );
205 void SetBranchAddress( TTree* t){ SetBranchAddress( (TChain*)t );};
206
207 GPamela* GetGPamela(){return this;};
208
209 ClassDef(GPamela,1);
210
211 };
212 /////////////////////////////////////////////////////////////////////////////
213 /////////////////////////////////////////////////////////////////////////////
214 /////////////////////////////////////////////////////////////////////////////
215 /////////////////////////////////////////////////////////////////////////////
216
217
218
219 /**
220 * \brief Class to describe particle tracks in the apparatus, including tracker and track-related variables from other detectors (calorimeter and TOF).
221 *
222 * This class inherites from TrkTrack, CaloTrkVar ecc...
223 *
224 */
225 //class PamTrack : public TrkTrack, public CaloTrkVar, public ToFTrkVar {
226 class PamTrack : public TObject {
227
228 private:
229
230 ExtTrack* trk_ext_track;
231 TrkTrack* trk_track;
232 CaloTrkVar* calo_track;
233 ToFTrkVar* tof_track;
234 OrbitalInfoTrkVar* orb_track;
235 Int_t pscore;
236 Int_t iscore;
237 bool candeleteobj;
238
239 // TClonesArray *Cluster; ///< clusters (if stored)
240
241 public:
242
243
244 PamTrack();
245 PamTrack(TrkTrack* , CaloTrkVar* , ToFTrkVar*, OrbitalInfoTrkVar* );
246 PamTrack(ExtTrack* , CaloTrkVar* , ToFTrkVar*, OrbitalInfoTrkVar* );
247 PamTrack(const PamTrack&);
248 ~PamTrack(){ Delete(); };
249
250 void Copy(PamTrack& ) const;
251
252 void Clear(Option_t *option);
253 void Clear(){Clear("");};
254 void Delete();
255
256 Bool_t IsSolved(){if ((pscore-iscore)>0) return true; return false;};
257 Int_t GetScore(){return (pscore-iscore);};
258 Int_t GetPScore(){return (pscore);};
259 Int_t GetIScore(){return (iscore);};
260 void SetPScore(Int_t p){pscore=p;};
261 void SetIScore(Int_t i){iscore=i;};
262
263 ExtTrack* GetExtTrack(){return trk_ext_track;};
264 TrkTrack* GetTrkTrack(){return trk_track;};
265 CaloTrkVar* GetCaloTrack(){return calo_track;};
266 ToFTrkVar* GetToFTrack(){return tof_track;};
267 OrbitalInfoTrkVar* GetOrbitalInfoTrack(){return orb_track;};
268
269 ClassDef(PamTrack,3);
270 };
271
272 /**
273 * \brief Class to describe PAMELA LEVEL2 data.
274 *
275 * This class inherites from TrkLevel2, CaloLevel2 ecc... and it overrides the TrkLevel2:GetTrack(int it) and TrkLevel2:GetTrackImage(int it) methods.
276 * This allows to solve the tracker ambiguity (that is, to choose between track images) by using also information from other detectors.
277 */
278
279 //class PamLevel2 : public CaloLevel2, public CaloLevel1, public ToFLevel2, public TrkLevel2, public TrkLevel1, public TrkHough, public TrigLevel2, public S4Level2, public NDLevel2, public AcLevel2, public OrbitalInfo {
280 class PamLevel2 : public TObject {
281
282 private:
283
284 // ------------------------------
285 // variables to retrieve run info
286 // ------------------------------
287 Long64_t irun; //current run entry, relative to the TChain
288 Long64_t irunt; //current run entry, relative to the TTree in the TChain
289 Long64_t runfirstentry; //first entry of run, relative to the TChain
290 Long64_t runlastentry; //last entry of run, relative to the TChain
291 Long64_t irunentry; //position of current entry, relative to the run
292 Long64_t totrunentry;
293 Long64_t totrunentrymax;
294 Long64_t totrunentrymin;
295 ULong64_t prevabstime; // abs time of previous event
296 UInt_t prevpktnum; // packet number of previous event
297 ULong64_t abstime; // current abs time
298 UInt_t pktnum; // current packet number
299 Bool_t isFragment;
300 Bool_t isSync; ///< the file is fully sinchronized between L2 and L0/DB data
301 // Bool_t hasL0EE; ///< backward compatibility flag for preselected event list
302 Long64_t il0entry; ///< entry of level0 file in selection list
303 TChain* run_tree;
304 TTree* run_tree_clone;
305 TChain* proc_tree;
306 TTree* proc_tree_clone;
307 TChain* sel_tree;
308 TTree* sel_tree_clone;
309 int *irunoffset;
310 GL_TIMESYNC *gltsync; // Emiliano
311 Bool_t fUpdateRunInfo; // Emiliano
312 Bool_t fUseDBinRunInfo; // Emiliano
313
314 Bool_t fDiscarded; ///< true if any file from a list is missing
315 TString customString; ///< String passed to ProcessingInfo
316
317 // -------------------------------------------
318 // variables to store total live and dead time
319 // -------------------------------------------
320 ULong64_t totdltime[3];// 0=live 1=dead 2=n.events
321
322 // ---------------------------------
323 // variables to retrieve level0 info
324 // ---------------------------------
325 TFile* l0_file;
326 TTree* l0_tree;
327 Int_t iroot;
328 Long64_t prevshift; // shift needed to sync level2 data with the DB (nested+DV_skipped packets) - global position in level2 file EM
329 Long64_t yprevshift; // shift needed to sync level2 data with level0 data (nested+DV_skipped packets) - run wise EM
330 Int_t maxshift; // EMILIANO maximum discrepancy between L2 and L0 data (the bigger the better concering synch but the processing speed drops) default = 10
331 // --------------------------------------------
332 // variables to store Level0 info (if required)
333 // --------------------------------------------
334 EventHeader* h0_obj;
335 TrkLevel0* trk0_obj;
336 CaloLevel0* calo0_obj;
337
338 // ---------------------------
339 // variables to connect the DB
340 // ---------------------------
341 TSQLServer* dbc;
342 TString host;
343 TString user;
344 TString psw;
345
346 // ---------------------------------------------
347 // variables to retrieve and clone level1-2 info
348 // ---------------------------------------------
349 TChain* pam_tree;
350 TTree* pam_tree_clone[NCLONES];
351
352 // --------------------------------------------
353 // variables to store Level1-2 info
354 // --------------------------------------------
355 TrkLevel1* trk1_obj;
356 TrkLevel2* trk2_obj;
357 TrkHough* trkh_obj;
358 CaloLevel1* calo1_obj;
359 CaloLevel2* calo2_obj;
360 ToFLevel2* tof2_obj;
361 TrigLevel2* trig_obj;
362 S4Level2* s4_obj;
363 NDLevel2* nd_obj;
364 AcLevel2* ac_obj;
365 OrbitalInfo* orb2_obj;
366 GL_RUN* run_obj;
367 SoftInfo* soft_obj; // Emiliano
368 ProcInfo* proc_obj; //EM
369
370
371
372 Int_t extAlgFlag;
373
374 TClonesArray* trk_ext_obj;
375 TClonesArray* trk_ext_nuc_obj;
376 TClonesArray* trk_nuc_obj;
377
378
379 TClonesArray* calo_ext_obj;
380 TClonesArray* calo_ext_nuc_obj;
381 TClonesArray* calo_nuc_obj;
382
383 TClonesArray* tof_ext_obj;
384 TClonesArray* tof_ext_nuc_obj;
385 TClonesArray* tof_nuc_obj;
386
387 TClonesArray* orb_ext_obj;
388 TClonesArray* orb_ext_nuc_obj;
389 TClonesArray* orb_nuc_obj;
390
391
392 TrkLevel2* trk2_nuc_obj;
393 CaloLevel2* calo2_nuc_obj;
394 ToFLevel2* tof2_nuc_obj;
395 OrbitalInfo* orb2_nuc_obj;
396
397
398
399 // --------------------------------------------
400 // variables to handle GP
401 // --------------------------------------------
402 GPamela* gp_obj;
403
404 // -----------------------------------
405 // variables to sort the track
406 // -----------------------------------
407 TClonesArray *tsorted;
408 TClonesArray *timage;
409 TClonesArray *text; //array of pamtrack objects built from extended algorythm
410 TClonesArray *tsorted_nuc;
411 TClonesArray *timage_nuc;
412 TClonesArray *text_nuc; //array of pamtrack objects built from extended algorythm
413
414 PamTrack *track; //store the last required
415 TString howtosort;
416 Float_t sortthr;
417
418 Bool_t issorted; // true if the current event has already been sorted with the current sort criteria
419 Long64_t lastsorted; // the last event whose tracks has been sorted
420
421
422 Bool_t issorted_new; // true if the current event has already been sorted with the current sort criteria
423 Long64_t lastsorted_new; // the last event whose tracks has been sorted
424
425 // --------------------------------------
426 // flags to load level0-1-2 trees/braches
427 // --------------------------------------
428 Bool_t CAL2; //level2 branch
429 Bool_t CAL1; //level1 branch
430 Bool_t CAL0; //yoda
431
432 Bool_t TRK2; //level2 branch
433 Bool_t TRK1; //level1 branch
434 Bool_t TRKh; //hough branch
435 Bool_t TRK0; //yoda
436
437 Bool_t TOF;
438 Bool_t TOF0;
439
440 Bool_t TRG;
441 Bool_t S4;
442 Bool_t ND;
443 Bool_t AC;
444 Bool_t ORB;
445
446 Bool_t GP; //GP simulation tree
447
448
449 Bool_t EXT;//get tracks from extended tracking algorythm
450 Bool_t NUC;//get tracks from nuclei algorythm
451
452 Bool_t PROC;//EM
453
454 const char* trkAlg;
455
456 // -----------
457 // other flags
458 // -----------
459 Bool_t RUN; // RunInfo tree
460 Bool_t ISGP; // GP simulation (...sort of patch, to skip OBT check, since OrbitalInfo is sometime missing)
461 Int_t SELLI; // tree of selected events (there is a selection list)
462
463 Bool_t DBG;
464
465 void Initialize();
466
467
468 public:
469
470 PamLevel2(TString ddir,TList *list,TString detlist);
471 PamLevel2(TString ddir,TString list,TString detlist);
472 PamLevel2(TString ddir,TString list);
473 PamLevel2();
474 ~PamLevel2(){Delete();};
475
476 void Clear();
477 void Reset();
478 void Delete();
479
480
481 // =============================================
482 // methods needed to read/write Level0-1-2 trees
483 // =============================================
484 void SetWhichTrees(TString);
485 void GetWhichTrees(TFile*);
486
487 TTree* GetPamTree(TFile*,TString);
488 TTree* GetPamTree(TFile* f){return GetPamTree(f,"");};
489
490 TList* GetListOfLevel2Files(TString, TString);
491 Bool_t CheckLevel2File(TString);
492 TChain* GetPamTree(TList*,TString);
493 TChain* GetPamTree(TString ddir,TString list,TString detlist){ return GetPamTree(GetListOfLevel2Files(ddir,list),detlist); };
494 TChain* GetPamTree(TString ddir,TString list){ return GetPamTree(GetListOfLevel2Files(ddir,list),""); };
495 TChain* AddFriend(TString);
496
497 TTree* GetRunTree(TFile*);
498 TChain* GetRunTree(TList*);
499 TChain* GetRunTree(TString ddir,TString list){ return GetRunTree(GetListOfLevel2Files(ddir,list)); };
500 Bool_t UpdateRunInfo(Long64_t);///< new implementation to solve Mori's bug
501 Bool_t UpdateRunInfo(TTree *,Long64_t);
502 Bool_t UpdateRunInfo(TChain *,Long64_t);
503
504 void SkipRunInfoUpdate(); // Emiliano
505 void DoRunInfoUpdate(){fUpdateRunInfo = true;}; // [default] Emiliano
506 void UseDBinRunInfo(){fUseDBinRunInfo = true;}; // [default] Emiliano
507 void NoDBinRunInfo(){fUseDBinRunInfo = false;}; // EM
508 void NoDBconnections(){SkipRunInfoUpdate();}; // Emiliano
509
510 void CreateCloneTrees0(TChain *fChain, TFile* file);
511 void CreateCloneTrees(TFile* file);
512 void CreateCloneTrees(){CreateCloneTrees(NULL);};
513 void FillCloneTrees();
514 TTree *GetCloneTree(TString);
515 void WriteCloneTrees();
516
517 void SetBranchAddress(TTree *);
518 void SetBranchAddress(TChain *);
519
520 // Int_t GetEntry(Int_t);
521 Int_t GetEntry(Long64_t);
522 Long64_t GetReadEntry();
523 Int_t GetYodaEntry();
524
525 void SetMaxShift(Int_t sh); // EMILIANO method to change the maxshift variable
526
527 Long64_t GetEntries(){return pam_tree->GetEntries();};
528 TChain* GetPamTree(){return pam_tree;};
529 TChain* GetRunTree(){return run_tree;};
530 TChain* GetProcessingInfoTree(){return proc_tree;};
531 TTree* GetYodaTree();
532
533 TFile* GetYodaFile(){return l0_file;}; // can be useful to know the name of level0 file we are using or similar things
534
535 // =============
536 // DB connection
537 // =============
538 void SetDBHost(TString str){host=str;};
539 void SetDBUser(TString str){user=str;};
540 void SetDBPsw(TString str){psw=str;};
541 TSQLServer* GetSQLServer(){return dbc;};
542 Bool_t SetDBConnection();
543
544 // ========================================================
545 // methods needed to retrieve subdetector general variables
546 // ========================================================
547 void* GetPointerTo(const char*);
548 EventHeader *GetEventHeader() { return h0_obj; };
549
550 /* TrkLevel0 *GetTrkLevel0() { return trk0_obj; }; */
551 /* CaloLevel0 *GetCaloLevel0() { return calo0_obj; }; */
552 TrkLevel0 *GetTrkLevel0();
553 CaloLevel0 *GetCaloLevel0();
554
555
556 TrkLevel1 *GetTrkLevel1() { return trk1_obj; };
557 TrkLevel2 *GetTrkLevel2() { return trk2_obj; };
558 TrkHough *GetTrkHough() { return trkh_obj; };
559 CaloLevel1 *GetCaloLevel1() { return calo1_obj;};
560 CaloLevel2 *GetCaloLevel2() { return calo2_obj;};
561 ToFLevel2 *GetToFLevel2() { return tof2_obj; };
562 TrigLevel2 *GetTrigLevel2() { return trig_obj; };
563 S4Level2 *GetS4Level2() { return s4_obj; };
564 NDLevel2 *GetNDLevel2() { return nd_obj; };
565 AcLevel2 *GetAcLevel2() { return ac_obj; };
566 OrbitalInfo *GetOrbitalInfo(){ return orb2_obj; };
567 GL_RUN *GetRunInfo() { return run_obj; };
568 SoftInfo *GetSoftInfo() { return soft_obj; }; // Emiliano
569 ProcInfo *GetProcInfo() { return proc_obj; }; // Emiliano
570 GPamela *GetGPamela() { return gp_obj; };
571
572 // ==============================================
573 // methods to retrieve subdetectors stored tracks
574 // ==============================================
575 TrkTrack* GetTrkStoredTrack(int seqno){return trk2_obj->TrkLevel2::GetStoredTrack(seqno); };
576 CaloTrkVar* GetCaloStoredTrack(int);
577 ToFTrkVar* GetToFStoredTrack(int);
578 OrbitalInfoTrkVar* GetOrbitalInfoStoredTrack(int);
579 //
580 // PamTrack* GetPamTrackAlong(TrkTrack*);
581 // PamTrack* GetPamTrackAlong(CaloTrkVar*); //se serve
582 // PamTrack* GetPamTrackAlong(ToFTrkVar*); //se serve
583
584 // =================================
585 // methods to retrieve pamela tracks
586 // =================================
587 // PamTrack* GetStoredTrack(Int_t);//obsolete
588 //
589 void SortTracks(TString); //assign value to variable sorted_tracks
590 void SortTracks(); //assign value to variable sorted_tracks
591 // TRefArray* GetTracks(); //return sorted_tracks
592 TClonesArray* GetTracks(); //return sorted_tracks
593 PamTrack* GetTrackOld(int);
594 PamTrack* GetTrackImageOld(int);
595 PamTrack* GetTrack(int i){ return GetTrackOld(i); };
596 PamTrack* GetTrackImage(int i){ return GetTrackImageOld(i); };
597 void SetSortingMethod(TString how);
598 TString GetSortingMethod(){return howtosort;};
599 void SetNucleiSortingThreshold(Float_t nucleithr){ sortthr = nucleithr; return;};
600 Float_t GetNucleiSortingThreshold(){ return sortthr;};
601
602
603
604
605 // =================================
606 // methods to handle new tracking algorythms
607 // =================================
608 /* Int_t GetTrackingAlgorythmFlag(){return extAlgFlag;}; */
609 /* void SetTrackingAlgorythm(const char * alg); */
610 /* const char* GetTrackingAlgorythm(); */
611
612 Int_t GetNTracks(const char*);
613 PamTrack* GetTrack(int,const char*);
614 PamTrack* GetTrackImage(int, const char*);
615 Bool_t TrackHasImage(int i, const char* alg){return GetTrackImage(i,alg)!=NULL;};
616
617 /* Int_t GetNTracks(){return GetNTracks(trkAlg); }; */
618 /* PamTrack* GetTrack(int i) { return GetTrack(i,trkAlg); }; */
619 /* PamTrack* GetTrackImage(int i){ return GetTrackImage(i,trkAlg); }; */
620
621 void SortTracksNew(); //assign value to variable sorted_tracks
622
623
624 // =================================
625 // other methods
626 // =================================
627 // Int_t ntrk(){ return trk2_obj->TrkLevel2::ntrk(); };
628
629
630 Long64_t GetRunID(){ return irun;};
631 Long64_t GetRunEntryID(){ return irunentry; };
632
633 // -----
634 // flags methods
635 // -----
636 Bool_t IsCAL2(){return CAL2;}; //level2 branch
637 Bool_t IsCAL1(){return CAL1;}; //level1 branch
638 Bool_t IsCAL0(){return CAL0;}; //yoda
639
640 Bool_t IsTRK2(){return TRK2;}; //level2 branch
641 Bool_t IsTRK1(){return TRK1;}; //level1 branch
642 Bool_t IsTRKh(){return TRKh;}; //hough branch
643 Bool_t IsTRK0(){return TRK0;}; //yoda
644
645 Bool_t IsTOF(){return TOF;};
646 Bool_t IsTOF0(){return TOF0;};
647
648 Bool_t IsTRG(){return TRG;};
649 Bool_t IsS4(){return S4;};
650 Bool_t IsND(){return ND;};
651 Bool_t IsAC(){return AC;};
652 Bool_t IsORB(){return ORB;};
653
654 Bool_t IsRUN(){return RUN;};
655
656 Bool_t IsEXT(){return EXT;};
657 Bool_t IsNUC(){return NUC;};
658
659 Bool_t IsGood(Bool_t strict=true);
660
661 Int_t IsSELLI(){return SELLI;}; //trees of selected events (there is a selection list)
662 void SetSELLI(Int_t selli){SELLI=selli;};
663
664 Bool_t IsPROC(){return PROC;};//EM
665
666 Bool_t HasDiscardedFiles(){return fDiscarded;}; ///< true if something went wrong and not all files were processed
667
668 Bool_t IsGP(){return ISGP;};
669
670 void SetGP(Bool_t tt){ISGP=tt;};
671
672 void SetDebug(Bool_t set){ DBG=set; TrkParams::SetVerboseMode(); };
673
674 void SetCustomString(TString cus){customString=cus;};
675 TString GetCustomString(){return customString;};
676
677 ClassDef(PamLevel2,4);
678 };
679
680 //===============================================================================================
681 //
682 //
683 //
684 //
685 //===============================================================================================
686
687
688 #endif
689

  ViewVC Help
Powered by ViewVC 1.1.23