FEDRA emulsion software from the OPERA Collaboration
EdbDataStore.h
Go to the documentation of this file.
1 #ifndef EDBDATASTORE_H
2 #define EDBDATASTORE_H
3 
4 #include <assert.h>
5 #include <TObject.h>
6 #include <TObjArray.h>
7 #include "EdbBrick.h"
8 #include "EdbLayer.h"
9 #include "EdbSegP.h"
10 #include "EdbPattern.h"
11 #include "EdbVertex.h"
12 #include "EdbScanTracking.h"
13 #include "EdbMomentumEstimator.h"
14 
15 class EdbDataStore: public TObject{
16  public:
17  EdbDataStore();
18  ~EdbDataStore();
20  void TransferTo(EdbDataStore* ds, char level, EdbSegmentCut* cut=0,int FromPlate=0, int ToPlate=57);
22  static void TransferSegs(EdbPatternsVolume* pv0, EdbPatternsVolume* pv1,EdbSegmentCut* cut=0,int FromPlate=0, int ToPlate=57);
24  void LoadMCVertices(TObjArray* vtx);
25  void Restore_PIDFromID();
26  void Restore_PatFromGeom(int np0=0, int np1=1000);
27  void Restore_TrxFromVtx();
28  void Restore_SegFromTrx(EdbSegmentCut* cut=0,int Plt0=0, int Plt1=1000);
30  void Clear(bool hard=false){ClearTracks(hard);ClearVTX();ClearRaw(hard);ClearSeg(hard);}
31  void ClearTracks(bool hard=false);
32  void ClearRaw(bool hard=false);
33  void ClearSeg(bool hard=false);
34  void ClearVTX();
35  void ClearGeom();
37  int Nt(){return eTracks.GetEntries();}
38  int Nv(){return eVTX.GetEntries();}
39  int Nplt(){return eRawPV.Npatterns()/2;}
41  void SetOwnTracks(bool own=true){eTracks.SetOwner(own);}
42  void SetOwnVertices(bool own=true){eVTX.SetOwner(own);}
43  void SetOwnTrkSegs(){for(int nt=0;nt<Nt();++nt)GetTrack(nt)->SetOwner();}
45  EdbTrackP* GetTrack (int n){return (n<eTracks.GetEntries())?(EdbTrackP*)eTracks.At(n):0;}
46  EdbVertex* GetVertex(int n){return (n<eVTX.GetEntries())?(EdbVertex*)eVTX.At(n):0;}
47  EdbPattern* GetSegPat(int n){return (n<eSegPV.Npatterns())?eSegPV.GetPattern(n):0;}
48  EdbPattern* GetRawPat(int n){return (n<eRawPV.Npatterns())?eRawPV.GetPattern(n):0;}
49  EdbPattern* GetPattern(int n, bool btk=true){return GetPV(btk)->GetPattern(n);}
50  EdbPatternsVolume* GetPV(bool btk=true){return btk?(&eSegPV):(&eRawPV);}
51 
53  EdbTrackP* FindTrack(int id);
54  EdbVertex* FindVertex(int id);
55  EdbPattern* FindPattern(int plate, int side=0);
56  EdbLayer* FindLayer(int plate, int side=0);
57 
58  EdbTrackP* FindLongTrk(int nsmin=8);
61  EdbSegP* AddSegment(EdbSegP* seg, EdbSegmentCut* cut=0, int Plt0=0, int Plt1=100);
62  void AddTrack(EdbTrackP* tr){assert(tr!=0); eTracks.Add(tr);}
63  void AddVertex(EdbVertex* v){assert(v!=0); eVTX.Add(v);}
64  void AddPattern(EdbPattern* pat);
65  void MakePattern(double z,int plate,int side);
67  void PrintBrief();
68  void PrintPatterns();
69 // void PrintLayers();
70  void PrintTracks(int vlev=0);
71 // void PrintVertices();
73  void SaveToRaw(const char* dir="./",const EdbID &idset="0.0.0.0",Option_t* option="RECREATE",bool doaff=true);
74  void SavePlateToRaw(const char* fname,int PID,Option_t* option="RECREATE");
76  void DoSmearing(EdbScanCond* cond_btk,EdbScanCond* cond_mtk=0);
77  void DoEfficiency(TF1* eff_seg,TF1* eff_mtk);
78  long Gen_mtk_BG(long NBG, int Plate, int Side, TH2* pdf_Ang, TH2* pdf_WT=0);
79 // void DoSmearTrack(EdbTrackP*);
80  public:
84  TObjArray eTracks;
85  TObjArray eVTX;
86 
87  ClassDef(EdbDataStore,1) //OPERA Brick data container
88 };
89 
90 class EdbDSRec: public EdbDataStore{
91  public:
92  EdbDSRec();
93  ~EdbDSRec(){};
94 
95  void Clear(bool hard=false);
96 
97  int DoTracking(bool use_btk=true,int p0=0, int p1=100);
98  int DoTracking0(bool use_btk=true,int p0=0, int p1=100);
99  int DoMomEst();
100  int DoVertexing();
101  int DoDecaySearch();
102  int DoFindBlkSeg(EdbVertex* v,int w0,double ImpMax=50., double RMax=3000, int Dpat=1);
105  void FillECovSeg(EdbSegP* seg,EdbScanCond* cnd=0);
106 
107  void FillECovTrks();
108  void FillErrorsCOV();
109  public:
113  ClassDef(EdbDSRec,1) //OPERA event reconstruction
114 };
115 
116 #endif
TTree * tr
Definition: Shower_E_FromShowerRoot.C:5
TCut cut
Definition: check_shower.C:6
EdbDisplay * ds
Definition: check_vertex.C:16
Definition: EdbBrick.h:37
Definition: EdbDataStore.h:90
EdbDSRec()
Definition: EdbDataStore.cxx:466
void FillECovPV(EdbPatternsVolume *, EdbScanCond *cnd=0)
prepare segments' cov matrix
Definition: EdbDataStore.cxx:740
void FillErrorsCOV()
Definition: EdbDataStore.cxx:755
EdbVertexRec eVRec
Definition: EdbDataStore.h:110
int DoDecaySearch()
Definition: EdbDataStore.cxx:716
void FillECovTrks()
Definition: EdbDataStore.cxx:721
EdbScanCond eCond_m
Definition: EdbDataStore.h:112
EdbMomentumEstimator eMomEst
Definition: EdbDataStore.h:111
EdbScanCond eCond_b
Definition: EdbDataStore.h:112
void FillECovSeg(EdbSegP *seg, EdbScanCond *cnd=0)
Definition: EdbDataStore.cxx:731
int DoFindBlkSeg(EdbVertex *v, int w0, double ImpMax=50., double RMax=3000, int Dpat=1)
TODO.
Definition: EdbDataStore.cxx:681
int DoTracking0(bool use_btk=true, int p0=0, int p1=100)
Definition: EdbDataStore.cxx:561
int DoVertexing()
Definition: EdbDataStore.cxx:631
void Clear(bool hard=false)
Definition: EdbDataStore.cxx:482
int DoTracking(bool use_btk=true, int p0=0, int p1=100)
Definition: EdbDataStore.cxx:488
int DoMomEst()
Definition: EdbDataStore.cxx:647
~EdbDSRec()
Definition: EdbDataStore.h:93
Definition: EdbDataStore.h:15
void SavePlateToRaw(const char *fname, int PID, Option_t *option="RECREATE")
Definition: EdbDataStore.cxx:761
void SetOwnTracks(bool own=true)
setown methods:
Definition: EdbDataStore.h:41
void ClearRaw(bool hard=false)
Definition: EdbDataStore.cxx:319
void ClearSeg(bool hard=false)
Definition: EdbDataStore.cxx:293
void PrintPatterns()
Definition: EdbDataStore.cxx:362
TObjArray eTracks
Definition: EdbDataStore.h:84
TObjArray eVTX
Definition: EdbDataStore.h:85
int Nt()
count methods:
Definition: EdbDataStore.h:37
~EdbDataStore()
Definition: EdbDataStore.cxx:16
static void TransferSegs(EdbPatternsVolume *pv0, EdbPatternsVolume *pv1, EdbSegmentCut *cut=0, int FromPlate=0, int ToPlate=57)
Definition: EdbDataStore.cxx:62
void AddPattern(EdbPattern *pat)
Definition: EdbDataStore.cxx:257
void SaveToRaw(const char *dir="./", const EdbID &idset="0.0.0.0", Option_t *option="RECREATE", bool doaff=true)
save methods:
Definition: EdbDataStore.cxx:828
EdbTrackP * FindTrack(int id)
find methods
Definition: EdbDataStore.cxx:187
void Restore_TrxFromVtx()
Definition: EdbDataStore.cxx:157
EdbPattern * GetSegPat(int n)
Definition: EdbDataStore.h:47
EdbPatternsVolume eRawPV
geometry
Definition: EdbDataStore.h:82
EdbPatternsVolume * GetPV(bool btk=true)
Definition: EdbDataStore.h:50
EdbVertex * GetVertex(int n)
Definition: EdbDataStore.h:46
void SetOwnVertices(bool own=true)
Definition: EdbDataStore.h:42
void Clear(bool hard=false)
clear methods
Definition: EdbDataStore.h:30
EdbVertex * FindPrimVtx()
Definition: EdbDataStore.cxx:252
int Nv()
Definition: EdbDataStore.h:38
void AddTrack(EdbTrackP *tr)
Definition: EdbDataStore.h:62
EdbVertex * FindVertex(int id)
Definition: EdbDataStore.cxx:197
EdbSegP * AddSegment(EdbSegP *seg, EdbSegmentCut *cut=0, int Plt0=0, int Plt1=100)
add methods
Definition: EdbDataStore.cxx:126
int Nplt()
Definition: EdbDataStore.h:39
void ClearGeom()
Definition: EdbDataStore.cxx:276
long Gen_mtk_BG(long NBG, int Plate, int Side, TH2 *pdf_Ang, TH2 *pdf_WT=0)
Definition: EdbDataStore.cxx:420
void AddVertex(EdbVertex *v)
Definition: EdbDataStore.h:63
void Restore_PIDFromID()
Definition: EdbDataStore.cxx:105
void Restore_SegFromTrx(EdbSegmentCut *cut=0, int Plt0=0, int Plt1=1000)
Definition: EdbDataStore.cxx:171
void LoadMCVertices(TObjArray *vtx)
restore MC info methods
Definition: EdbDataStore.cxx:18
EdbLayer * FindLayer(int plate, int side=0)
Definition: EdbDataStore.cxx:206
EdbPattern * GetRawPat(int n)
Definition: EdbDataStore.h:48
EdbBrickP * eBrick
Definition: EdbDataStore.h:81
void PrintTracks(int vlev=0)
Definition: EdbDataStore.cxx:346
void DoSmearing(EdbScanCond *cond_btk, EdbScanCond *cond_mtk=0)
methods for simulation:
Definition: EdbDataStore.cxx:372
EdbDataStore()
Definition: EdbDataStore.cxx:11
void Restore_PatFromGeom(int np0=0, int np1=1000)
Definition: EdbDataStore.cxx:144
void PrintBrief()
print methods
Definition: EdbDataStore.cxx:340
void MakePattern(double z, int plate, int side)
Definition: EdbDataStore.cxx:264
void DoEfficiency(TF1 *eff_seg, TF1 *eff_mtk)
Definition: EdbDataStore.cxx:386
void ClearVTX()
Definition: EdbDataStore.cxx:285
EdbTrackP * GetTrack(int n)
get methods
Definition: EdbDataStore.h:45
EdbPattern * FindPattern(int plate, int side=0)
Definition: EdbDataStore.cxx:220
EdbPattern * GetPattern(int n, bool btk=true)
Definition: EdbDataStore.h:49
void TransferGeometry(EdbDataStore *ds)
Definition: EdbDataStore.cxx:25
void SetOwnTrkSegs()
Definition: EdbDataStore.h:43
EdbTrackP * FindLongTrk(int nsmin=8)
Definition: EdbDataStore.cxx:236
EdbPatternsVolume eSegPV
Definition: EdbDataStore.h:83
void TransferTo(EdbDataStore *ds, char level, EdbSegmentCut *cut=0, int FromPlate=0, int ToPlate=57)
transfer methods
Definition: EdbDataStore.cxx:31
void ClearTracks(bool hard=false)
Definition: EdbDataStore.cxx:289
Definition: EdbID.h:7
Definition: EdbLayer.h:40
Definition: EdbMomentumEstimator.h:20
Definition: EdbPattern.h:280
Definition: EdbPattern.h:348
Int_t Npatterns() const
Definition: EdbPattern.h:380
EdbPattern * GetPattern(int id) const
Definition: EdbPattern.cxx:1887
Definition: EdbScanCond.h:10
Definition: EdbSegP.h:18
Definition: EdbSegmentCut.h:6
Definition: EdbPattern.h:118
void SetOwner()
Definition: EdbPattern.h:144
Definition: EdbVertex.h:194
Definition: EdbVertex.h:68
Definition: Side.h:11
EdbID idset
Definition: emrec.cpp:35
const char * fname
Definition: mc2raw.cxx:41
long NBG
Definition: mc2raw.cxx:39
Int_t plate
Definition: merge_Energy_SytematicSources_Electron.C:1
float ImpMax
Definition: check_vertex.C:30
Definition: Flexmotn.h:102