FEDRA emulsion software from the OPERA Collaboration
EdbDataSet.h
Go to the documentation of this file.
1#ifndef ROOT_EdbDataSet
2#define ROOT_EdbDataSet
5
11
12#include "TObjArray.h"
13#include "TFile.h"
14#include "TCut.h"
15#include "EdbMask.h"
16#include "EdbAffine.h"
17#include "EdbRun.h"
18#include "EdbPVRec.h"
19#include "EdbLayer.h"
20#include "EdbSegmentCut.h"
21#include "EdbVertex.h"
22#include "TMatrix.h"
23#include "TArrayC.h"
24
26class EdbDataPiece : public TNamed {
27
28 public:
29 Int_t eAFID;
30 Int_t eCLUST;
31
32 private:
33 Int_t ePlate;
34 Int_t ePiece;
35 Int_t eFlag;
36 TObjArray eRunFiles; //
37 // TString eFileNameRaw; // name of the raw data file (run)
38
42 TObjArray *eCuts[3];
43 Float_t eCutCP[6]; //
44 Float_t eCutGR;
45 Int_t eOUTPUT; //
46
47 TCut *eRCuts[3];
48
49 public:
50 TString eFileNameCP;
51 TString eFileNamePar;
53
55 TTree *eCouplesTree;
56
58
59 public:
61 EdbDataPiece(int plate, int piece, char* file, int flag);
62 virtual ~EdbDataPiece();
63
64 void Set0();
65
66 int Plate() const {return ePlate;}
67 int InitCouplesInd();
68 int GetLinkedSegEntr(int side, int aid, int vid, int sid, TArrayI &entr) const;
69 void SetVolume0( float x0, float y0, float z0, float tx=0, float ty=0 );
70 void SetVolumeA( float dx, float dy ) { GetLayer(0)->SetDXDY( dx, dy); }
71 void AddRunFile( const char *name );
72 void CloseRun();
73 const char *GetRunFile(int i) const;
74 const char *MakeName();
75 const char *MakeNameCP(const char *dir);
76 const char *GetNameCP() const {return eFileNameCP.Data();}
77 void Print();
78 void WriteCuts();
79 int CheckCCD(int maxentr=2000);
80 int RemoveCCDPeak(TMatrix &matr);
82
83 void SetCouplesTree(TTree *tree) {eCouplesTree=tree;}
84 int Nruns() const { return eRunFiles.GetEntriesFast(); }
85 int Flag() const {return eFlag;}
86 EdbLayer *GetMakeLayer(int id);
88 { if(eLayers[id]) return (EdbLayer *)eLayers[id]; else return 0; }
89 EdbScanCond *GetMakeCond(int id);
91 { if(eCond[id]) return (EdbScanCond *)eCond[id]; else return 0; }
92
93
94 void SetOUTPUT(int out=1) {eOUTPUT=out;}
95 void SetCutGR(float chi) {eCutGR=chi;}
96 void AddCutCP(float var[6]);
97 void AddSegmentCut(int layer, int xi, float var[10]);
98 void AddSegmentCut(int layer, int xi, float min[5], float max[5]);
99 int NCuts(int layer);
100 EdbSegmentCut *GetCut(int layer, int i)
101 { return (EdbSegmentCut *)(eCuts[layer]->UncheckedAt(i)); }
102
103 void AddRCut(int layer, TCut &cut);
104 TCut *GetRCut(int layer) { return eRCuts[layer]; }
105
106 float GetCutGR() const {return eCutGR;}
107 int GetOUTPUT() const {return eOUTPUT;}
108
109 int AcceptViewHeader(const EdbViewHeader *head);
110 void MakeNamePar(const char *dir);
111 int CorrectAngles();
112 int CorrectAngles(TTree *tree);
113 void CorrectShrinkage( int layer, float shr );
114 int UpdateShrPar( int layer );
115 int UpdateAffPar( int layer, EdbAffine2D &aff);
116 int UpdateAffTPar( int layer, EdbAffine2D &aff);
117 int UpdateZPar( int layer, float z );
118 int TakePiecePar();
119 int ReadPiecePar(const char *file);
120 int MakeLinkListArea(int irun);
121 int MakeLinkListCoord(int irun);
122 int GetAreaData(EdbPVRec *ali, int const area, int const side);
123 int TakeRawSegment(EdbView *view, int id, EdbSegP &segP, int side);
124 int PassCuts(int id, float var[5]);
125 int PassCutCP(float var[6]);
126
127 float GetRawSegmentPix( EdbSegment *seg );
128 float CalculateSegmentChi2( EdbSegment *seg, float sx, float sy, float sz );
129
130 int GetRawData(EdbPVRec *ali);
131 int GetCPData( EdbPattern *pat, EdbPattern *p1=0, EdbPattern *p2=0 );
132 int GetCPData_new( EdbPattern *pat, EdbPattern *p1=0, EdbPattern *p2=0, TIndex2 *trseg=0 );
134
135 int InitCouplesTree( const char *mode="READ" );
136 static TTree *InitCouplesTree( const char *file, const char *mode );
137 void CloseCPData();
138
139 ClassDef(EdbDataPiece,2) // Edb raw data unit (scanned plate) associated with run file
140};
141
142
144class EdbDataSet : public TNamed {
145
146 private:
147
148 TString eInputList;
149 TString eAnaDir;
150 TString eParDir;
151 TString eDBFileName;
152 TFile *eDBFile;
153
154 TObjArray ePieces;
155
156 public:
157 EdbDataSet();
158 EdbDataSet(const char *file);
159 virtual ~EdbDataSet();
160
161 void Set0();
162 int N() const { return ePieces.GetEntriesFast(); }
164 { if(id<ePieces.GetEntriesFast()) return (EdbDataPiece *)ePieces.At(id); else return 0;}
165
166 const char *GetAnaDir() const {return eAnaDir.Data();}
167 const char *GetParDir() const {return eParDir.Data();}
168 int ReadDataSetDef(const char *file);
169 int GetRunList(const char *file);
170 void PrintRunList();
171 void WriteRunList();
172
173 EdbDataPiece *FindPiece(const char *name);
174
175 void Print();
176
177 ClassDef(EdbDataSet,1) // OPERA emulsion data set
178};
179
181class EdbDataProc : public TObject {
182
183 private:
184
186
188
190
191 public:
192 EdbDataProc();
193 EdbDataProc(int npl, TArrayI &ids, TArrayF &zs);
194 EdbDataProc(const char *file);
195 virtual ~EdbDataProc();
196
198 EdbPVRec *PVR() const {return ePVR;}
199 EdbPVRec* GetPVR() const {return ePVR;}
200 void SetPVR(EdbPVRec *pvr) {ePVR=pvr;}
201
202 EdbPVRec *ExtractDataVolume( EdbSegP &v, int plmin, int plmax,
203 float accept[4],
204 int datatype=0 );
205 EdbPVRec *ExtractDataVolume( EdbTrackP &tr, float binx=20, float bint=10,
206 int datatype=0 );
207 EdbPVRec *ExtractDataVolumeF( EdbTrackP &tr, float binx=20, float bint=10,
208 int datatype=0 );
209
210 int InitVolume(int datatype=0, const char *rcut="1");
211 int InitVolume(EdbPVRec *ali, int datatype=0, TIndex2 *trseg=0 );
212 int InitVolumeTracks(EdbPVRec *ali, const char *rcut);
214 int Process(){ return Link(); } // to be removed
215 int CheckCCD();
216 int Link();
217 int Link(EdbDataPiece &piece);
218 void Align(int alignFlag);
219
220 static int LinkTracksWithFlag( EdbPVRec *ali, float p, float probmin, int nsegmin, int maxgap, int flag, float mass=0.1396 );
221 void LinkTracks(int alg=0, float p=-1.);
222 void LinkTracksC(int alg=0, float p=-1.);
223 void LinkRawTracks(int alg=0);
224 void AlignLinkTracks(int alg=0, int alignFlag=0);
225
226 void SetNoUpdate(int nu) { eNoUpdate=nu; }
227 int NoUpdate() const { return eNoUpdate; }
228
229 int ShrinkCorr() {return 1;}
230 int CheckShrinkage( EdbPVRec *ali, int couple, float &shr1, float &shr2 );
231 void CorrectAngles();
232
233 void AjustZ(int doZ);
234 void FineAlignment(int doFine);
235 void FineAlignmentTracks();
236
237 void FillCouplesTree( TTree *tree, EdbPVRec *al, int fillraw=0 );
238 void CloseCouplesTree( TTree *tree );
239
240 static int MakeTracksTree(EdbPVRec *ali=0, const char *file="linked_tracks.root");
241 static int MakeVertexTree(TObjArray &vtxarr, const char *file);
242 static int MakeTracksTree(TObjArray &tracks, float xv=0, float yv=0, const char *file="linked_tracks.root");
243 static int ReadVertexTree( EdbVertexRec &vertexrec, const char *fname, const char *rcut, map<int,EdbTrackP*> trackID_map);
244 static int ReadVertexTree( EdbVertexRec &vertexrec, const char *fname, const char *rcut, TObjArray *builttracks = 0);
245 EdbVertex* GetVertexFromTree( EdbVertexRec &vertexrec, const char *fname, const int vertexID );
246 static int ReadTracksTree(EdbPVRec &ali,
247 const char *fname="linked_tracks.root",
248 // int nsegMin=3,
249 // float probMin=0.01,
250 const char *rcut="t.eFlag>-1&&nseg>2&&t.eProb>.01" );
251
253
254 ClassDef(EdbDataProc,1) // emulsion data processing
255};
256
257#endif /* ROOT_EdbDataSet */
brick z0
Definition: RecDispMC.C:106
TTree * tr
Definition: Shower_E_FromShowerRoot.C:5
float min(TClonesArray *t)
Definition: bitview.cxx:275
Definition: EdbAffine.h:17
Edb raw data unit (scanned plate) associated with run file.
Definition: EdbDataSet.h:26
const char * GetRunFile(int i) const
Definition: EdbDataSet.cxx:183
int GetLinkedSegEntr(int side, int aid, int vid, int sid, TArrayI &entr) const
Definition: EdbDataSet.cxx:147
float CalculateSegmentChi2(EdbSegment *seg, float sx, float sy, float sz)
Definition: EdbDataSet.cxx:653
int GetOUTPUT() const
Definition: EdbDataSet.h:107
void MakeNamePar(const char *dir)
Definition: EdbDataSet.cxx:268
void SetCutGR(float chi)
Definition: EdbDataSet.h:95
void AddRunFile(const char *name)
Definition: EdbDataSet.cxx:176
const char * MakeNameCP(const char *dir)
Definition: EdbDataSet.cxx:199
Int_t ePiece
piece id in this plate
Definition: EdbDataSet.h:34
EdbLayer * GetLayer(int id)
Definition: EdbDataSet.h:87
void AddRCut(int layer, TCut &cut)
Definition: EdbDataSet.cxx:235
void SetOUTPUT(int out=1)
Definition: EdbDataSet.h:94
Int_t eFlag
0-do nothing, 1-do something
Definition: EdbDataSet.h:35
int UpdateAffTPar(int layer, EdbAffine2D &aff)
Definition: EdbDataSet.cxx:529
void AddSegmentCut(int layer, int xi, float var[10])
Definition: EdbDataSet.cxx:217
Float_t eCutCP[6]
Definition: EdbDataSet.h:43
Int_t ePlate
plate id
Definition: EdbDataSet.h:33
int InitCouplesTree(const char *mode="READ")
Definition: EdbDataSet.cxx:1239
TString eFileNameCP
root-style text cuts
Definition: EdbDataSet.h:50
int RemoveCCDPeak(TMatrix &matr)
Definition: EdbDataSet.cxx:988
void Set0()
Definition: EdbDataSet.cxx:66
int GetAreaData(EdbPVRec *ali, int const area, int const side)
Definition: EdbDataSet.cxx:1137
int MakeLinkListArea(int irun)
Definition: EdbDataSet.cxx:1182
EdbScanCond * eCond[3]
Definition: EdbDataSet.h:40
int TakePiecePar()
Definition: EdbDataSet.cxx:276
int Flag() const
Definition: EdbDataSet.h:85
int GetRawData(EdbPVRec *ali)
Definition: EdbDataSet.cxx:1083
int GetCPData_new(EdbPattern *pat, EdbPattern *p1=0, EdbPattern *p2=0, TIndex2 *trseg=0)
Definition: EdbDataSet.cxx:792
EdbScanCond * GetMakeCond(int id)
Definition: EdbDataSet.cxx:258
void SetVolume0(float x0, float y0, float z0, float tx=0, float ty=0)
Definition: EdbDataSet.cxx:455
void CloseCPData()
Definition: EdbDataSet.cxx:91
TIndexCell * eCouplesInd
Definition: EdbDataSet.h:52
void SetVolumeA(float dx, float dy)
Definition: EdbDataSet.h:70
int TakeRawSegment(EdbView *view, int id, EdbSegP &segP, int side)
Definition: EdbDataSet.cxx:597
int UpdateShrPar(int layer)
Definition: EdbDataSet.cxx:469
int Nruns() const
Definition: EdbDataSet.h:84
TString eFileNamePar
name of the parameters file
Definition: EdbDataSet.h:51
EdbLayer * GetMakeLayer(int id)
Definition: EdbDataSet.cxx:208
TTree * eCouplesTree
Definition: EdbDataSet.h:55
int PassCuts(int id, float var[5])
Definition: EdbDataSet.cxx:588
TCut * GetRCut(int layer)
Definition: EdbDataSet.h:104
EdbMask * eEraseMask
id's (entries) of segments to be erased when read couples tree
Definition: EdbDataSet.h:57
Int_t eCLUST
1-use clusters, 0 - do not
Definition: EdbDataSet.h:30
int UpdateZPar(int layer, float z)
Definition: EdbDataSet.cxx:508
int UpdateSegmentCut(EdbSegmentCut cut)
Definition: EdbDataSet.cxx:1029
int CorrectAngles()
Definition: EdbDataSet.cxx:875
TObjArray eRunFiles
Definition: EdbDataSet.h:36
int PassCutCP(float var[6])
Definition: EdbDataSet.cxx:580
virtual ~EdbDataPiece()
Definition: EdbDataSet.cxx:50
int ReadPiecePar(const char *file)
Definition: EdbDataSet.cxx:282
EdbLayer * eLayers[3]
base(0),up(1),down(2) layers
Definition: EdbDataSet.h:39
float GetRawSegmentPix(EdbSegment *seg)
Definition: EdbDataSet.cxx:690
Int_t eAFID
1-use fiducial marks transformations, 0 - do not
Definition: EdbDataSet.h:29
void WriteCuts()
Definition: EdbDataSet.cxx:554
int AcceptViewHeader(const EdbViewHeader *head)
Definition: EdbDataSet.cxx:1217
void Print()
Definition: EdbDataSet.cxx:161
int CheckCCD(int maxentr=2000)
Definition: EdbDataSet.cxx:942
int MakeLinkListCoord(int irun)
Definition: EdbDataSet.cxx:1304
EdbSegmentCut * GetCut(int layer, int i)
Definition: EdbDataSet.h:100
const char * GetNameCP() const
Definition: EdbDataSet.h:76
int UpdateAffPar(int layer, EdbAffine2D &aff)
Definition: EdbDataSet.cxx:488
TCut * eRCuts[3]
Definition: EdbDataSet.h:47
EdbScanCond * GetCond(int id)
Definition: EdbDataSet.h:90
Int_t eOUTPUT
Definition: EdbDataSet.h:45
TObjArray * eCuts[3]
array of cuts
Definition: EdbDataSet.h:42
int GetCPData(EdbPattern *pat, EdbPattern *p1=0, EdbPattern *p2=0)
Definition: EdbDataSet.cxx:731
TIndexCell * eAreas[3]
base/up/down surface areas list
Definition: EdbDataSet.h:41
void CloseRun()
Definition: EdbDataSet.cxx:105
Float_t eCutGR
grain cut (chi)
Definition: EdbDataSet.h:44
float GetCutGR() const
Definition: EdbDataSet.h:106
void CorrectShrinkage(int layer, float shr)
Definition: EdbDataSet.cxx:463
int InitCouplesInd()
Definition: EdbDataSet.cxx:112
EdbRun * eRun
Definition: EdbDataSet.h:54
int Plate() const
Definition: EdbDataSet.h:66
void SetCouplesTree(TTree *tree)
Definition: EdbDataSet.h:83
int TakeCPSegment(EdbSegCouple &cp, EdbSegP &segP)
Definition: EdbDataSet.cxx:706
int NCuts(int layer)
Definition: EdbDataSet.cxx:251
void AddCutCP(float var[6])
Definition: EdbDataSet.cxx:245
const char * MakeName()
Definition: EdbDataSet.cxx:190
emulsion data processing
Definition: EdbDataSet.h:181
int CheckShrinkage(EdbPVRec *ali, int couple, float &shr1, float &shr2)
Definition: EdbDataSet.cxx:1819
EdbDataSet * GetDataSet()
Definition: EdbDataSet.h:197
static int MakeVertexTree(TObjArray &vtxarr, const char *file)
Definition: EdbDataSet.cxx:2517
void SetNoUpdate(int nu)
Definition: EdbDataSet.h:226
int InitVolumeTracks(EdbPVRec *ali, const char *rcut)
Definition: EdbDataSet.cxx:2091
EdbDataSet * eDataSet
Definition: EdbDataSet.h:185
void AjustZ(int doZ)
Definition: EdbDataSet.cxx:2242
int NoUpdate() const
Definition: EdbDataSet.h:227
EdbVertex * GetVertexFromTree(EdbVertexRec &vertexrec, const char *fname, const int vertexID)
Definition: EdbDataSet.cxx:2839
void AlignLinkTracks(int alg=0, int alignFlag=0)
Definition: EdbDataSet.cxx:2474
void Align(int alignFlag)
Definition: EdbDataSet.cxx:2226
void CorrectAngles()
Definition: EdbDataSet.cxx:1862
virtual ~EdbDataProc()
Definition: EdbDataSet.cxx:1624
int InitVolumeRaw(EdbPVRec *ali)
Definition: EdbDataSet.cxx:1876
static int ReadTracksTree(EdbPVRec &ali, const char *fname="linked_tracks.root", const char *rcut="t.eFlag>-1&&nseg>2&&t.eProb>.01")
Definition: EdbDataSet.cxx:2922
int InitVolume(int datatype=0, const char *rcut="1")
Definition: EdbDataSet.cxx:2066
EdbPVRec * PVR() const
Definition: EdbDataSet.h:198
EdbPVRec * GetPVR() const
Definition: EdbDataSet.h:199
int Link()
Definition: EdbDataSet.cxx:1649
int Process()
Definition: EdbDataSet.h:214
void LinkRawTracks(int alg=0)
Definition: EdbDataSet.cxx:2372
void FillCouplesTree(TTree *tree, EdbPVRec *al, int fillraw=0)
Definition: EdbDataSet.cxx:1740
TIndex2 * MakeTracksSegmentsList(EdbPVRec &ali)
Definition: EdbDataSet.cxx:3005
void CloseCouplesTree(TTree *tree)
Definition: EdbDataSet.cxx:1809
EdbDataProc()
==============================================================================
Definition: EdbDataSet.cxx:1583
void LinkTracks(int alg=0, float p=-1.)
Definition: EdbDataSet.cxx:2309
static int MakeTracksTree(EdbPVRec *ali=0, const char *file="linked_tracks.root")
Definition: EdbDataSet.cxx:2506
static int LinkTracksWithFlag(EdbPVRec *ali, float p, float probmin, int nsegmin, int maxgap, int flag, float mass=0.1396)
Definition: EdbDataSet.cxx:2256
static int ReadVertexTree(EdbVertexRec &vertexrec, const char *fname, const char *rcut, map< int, EdbTrackP * > trackID_map)
Definition: EdbDataSet.cxx:2658
void FineAlignment(int doFine)
Definition: EdbDataSet.cxx:2395
void FineAlignmentTracks()
Definition: EdbDataSet.cxx:2133
int CheckCCD()
Definition: EdbDataSet.cxx:1631
int eNoUpdate
Definition: EdbDataSet.h:189
EdbPVRec * ExtractDataVolumeF(EdbTrackP &tr, float binx=20, float bint=10, int datatype=0)
Definition: EdbDataSet.cxx:1957
int ShrinkCorr()
Definition: EdbDataSet.h:229
void SetPVR(EdbPVRec *pvr)
Definition: EdbDataSet.h:200
void LinkTracksC(int alg=0, float p=-1.)
Definition: EdbDataSet.cxx:2344
EdbPVRec * ePVR
Definition: EdbDataSet.h:187
EdbPVRec * ExtractDataVolume(EdbSegP &v, int plmin, int plmax, float accept[4], int datatype=0)
Definition: EdbDataSet.cxx:1914
OPERA emulsion data set.
Definition: EdbDataSet.h:144
void Set0()
Definition: EdbDataSet.cxx:1432
int GetRunList(const char *file)
Definition: EdbDataSet.cxx:1537
const char * GetAnaDir() const
Definition: EdbDataSet.h:166
void PrintRunList()
Definition: EdbDataSet.cxx:1491
virtual ~EdbDataSet()
Definition: EdbDataSet.cxx:1426
void Print()
Definition: EdbDataSet.cxx:1499
TString eAnaDir
path for analysis data directory
Definition: EdbDataSet.h:149
EdbDataSet()
==============================================================================
Definition: EdbDataSet.cxx:1412
TString eDBFileName
root file to keep pieces parameters
Definition: EdbDataSet.h:151
TObjArray ePieces
array of runs
Definition: EdbDataSet.h:154
EdbDataPiece * GetPiece(int id)
Definition: EdbDataSet.h:163
TString eParDir
path for parameters directory
Definition: EdbDataSet.h:150
void WriteRunList()
Definition: EdbDataSet.cxx:1511
int N() const
Definition: EdbDataSet.h:162
int ReadDataSetDef(const char *file)
Definition: EdbDataSet.cxx:1443
EdbDataPiece * FindPiece(const char *name)
Definition: EdbDataSet.cxx:1524
TString eInputList
list of input data (runs)
Definition: EdbDataSet.h:148
const char * GetParDir() const
Definition: EdbDataSet.h:167
TFile * eDBFile
the file (database) to save all parameters
Definition: EdbDataSet.h:152
Definition: EdbLayer.h:39
void SetDXDY(float dx, float dy)
Definition: EdbLayer.h:97
mask service class
Definition: EdbMask.h:8
Definition: EdbPVRec.h:148
Definition: EdbPattern.h:273
Definition: EdbRun.h:75
Definition: EdbScanCond.h:10
Definition: EdbSegCouple.h:17
Definition: EdbSegP.h:21
Definition: EdbSegmentCut.h:6
segment of the track
Definition: EdbSegment.h:63
Definition: EdbPattern.h:113
Definition: EdbVertex.h:194
Definition: EdbVertex.h:69
view identification
Definition: EdbView.h:26
Base scanning data object: entry into Run tree.
Definition: EdbView.h:134
simple index class for fast search in linear cases
Definition: EdbMath.h:50
sort collection with attributes
Definition: TIndexCell.h:19
TCut cut
Definition: check_shower.C:6
int max
Definition: check_shower.C:41
TTree * tracks
Definition: check_tr.C:19
void trseg(int event=40, const char *def)
Definition: check_vertex.C:44
EdbPVRec * ali
Definition: test_oracle.C:9
EdbSegCouple * cp
Definition: tlg2couples.C:28
TFile * file
Definition: write_pvr.C:3
const char * fname
Definition: mc2raw.cxx:41
Int_t plate
Definition: merge_Energy_SytematicSources_Electron.C:1
const char * name
Definition: merge_Energy_SytematicSources_Electron.C:24
UInt_t id
Definition: tlg2couples.C:117
int nsegmin
Definition: check_vertex.C:23
float mass
Definition: check_vertex.C:21
p
Definition: testBGReduction_AllMethods.C:8