FEDRA emulsion software from the OPERA Collaboration
EdbRunAccess.h
Go to the documentation of this file.
1#ifndef ROOT_EdbRunAccess
2#define ROOT_EdbRunAccess
5
11
12#include "TH2F.h"
13#include "TGraph2D.h"
14#include "TCut.h"
15#include "EdbRun.h"
16#include "EdbCell2.h"
17#include "EdbPattern.h"
18#include "EdbLayer.h"
19#include "EdbSegmentCut.h"
20#include "EdbScanCond.h"
21
23class EdbRunAccess : public TObject {
24
25 public:
26 Int_t eAFID;
27 Int_t eCLUST;
29
32 Bool_t eInvertSides;
33 Int_t eWeightAlg;
34 //eUseDensityAsW; // in case of LASSO tracking possible to use eSigmaY as eW
35
37 // re-taken in by FWM 13072016 (otherwithe compilatiion error in libScan EdbRunAccess)
38
40 Float_t ePixelCorrX;
41 Float_t ePixelCorrY;
42
44 Int_t eTracking;
45
46 TGraph2D *eGraphZ[4];
47 TGraph2D *eGraphDZ[3];
48
49 private:
50 TString eRunFileName;
52
54
56 Int_t eLastArea;
57 Int_t eNareas;
59
62 TObjArray *eCuts[3];
65
66 Float_t eCutGR;
67
68 Float_t eXmin,eXmax,eYmin,eYmax; //run limits
69
70 Float_t eXstep[3];
71 Float_t eYstep[3];
72 Float_t eViewXmin[3], eViewXmax[3];
73 Float_t eViewYmin[3], eViewYmax[3];
74
75 TObjArray *eViewCorr;
76
77 public:
80 EdbRunAccess(const char *fname);
81 virtual ~EdbRunAccess();
82
83 EdbSegment *GetRawSegmentN( int vid, int sid, int rs=0);
84 EdbSegment *GetRawSegment( int vid, int sid, int rs=0 );
85 EdbSegment *GetRawSegment( EdbView &v, int sid, int rs=0 );
86 void ApplyCorrections( const EdbView &view, EdbSegment &s, const int rs );
87 void ReadVAfile();
88
89 void Set0();
90 void SetPixelCorrection(const char *str);
91 void ClearCuts();
92 bool InitRun(const char *runfile=0, bool do_update=false);
93 bool InitRunFromRWC(char *rwcname, bool bAddRWD=true, const char* options="");
94 bool AddRWDToRun(char *rwdname, const char* options="");
95 void Print();
96 void PrintStat();
97 void GuessNviewsPerArea();
98
99 Int_t GetNareas() { return eNareas; }
101
102 void CheckRunLine();
103 int Check0Views(EdbPattern &pat, int thres=1);
104 int CheckEmptyViews(EdbPattern &pat);
106 void CheckViewStep();
107 void CheckViewStep(int ud);
108 TH2F *CheckUpDownOffsets();
109 void CheckViewSize();
110
111 EdbRun *GetRun() const {return eRun;}
112 EdbLayer *GetMakeLayer(int id);
114 { if(eLayers[id]) return (EdbLayer *)eLayers[id]; else return 0; }
115
116 int FillVP();
117 EdbPattern *GetVP(int ud) const { if(ud>-1&&ud<3) return eVP[ud]; else return 0; }
118
119 int FirstArea() const { return eFirstArea;}
120 int LastArea() const { return eLastArea;}
121
122 //return the entries of views in the run tree:
123
124 int GetVolumeArea(EdbPatternsVolume &vol, int area);
125 int GetVolumeData(EdbPatternsVolume &vol, int nviews, TArrayI &srt, int &nrej);
126
127 int GetViewsArea(int ud, TArrayI &entr, int area,
128 float &xmin, float &xmax, float &ymin, float &ymax );
129 int GetViewsArea(int ud, TArrayI &entr,
130 float xmin, float xmax, float ymin, float ymax );
131 int GetViewsAreaMarg(int ud, TArrayI &entr, int area, float xmarg, float ymarg);
132
133 int GetViewsXY(int ud, TArrayI &entr, float x, float y, float r=200.);
134 int GetEntryXY(int ud, float x, float y);
136
137 int GetPatternXYcut(EdbSegP &s, int side, EdbPattern &pat, float dr, float dt);
138 int GetPatternXY(EdbSegP &s, int side, EdbPattern &pat, float rmin=200);
139 int GetPatternData(EdbPattern &pat, int side, int nviews, TArrayI &srt, int &nrej);
140 int GetPatternDataForPrediction( int id, int side, EdbPattern &pat );
141
142 bool AcceptRawSegment(EdbView *view, int ud, EdbSegP &segP, int side, int entry);
143
144 int ViewSide(const EdbView *view) const;
145 float ViewX(const EdbView *view) const {return view->GetXview();} // todo
146 float ViewY(const EdbView *view) const {return view->GetYview();} // todo
147
148 float SegmentWeight(const EdbSegment &s);
149
150 bool PassCuts(int ud, EdbSegment &seg);
151 int NCuts(int ud) {
152 if(!eCuts[ud]) return 0;
153 return eCuts[ud]->GetEntriesFast();
154 }
155
156 bool SetSegmentAtExternalSurface( EdbSegment *seg, int side );
157 float GetRawSegmentPix( EdbSegment *seg );
158 float CalculateSegmentChi2( EdbSegment *seg, float sx, float sy, float sz );
159
160 void AddSegmentCut(int xi, const char *cutline );
161 void AddSegmentCut(int ud, int xi, float var[10]);
162 void AddSegmentCut(int ud, int xi, float min[5], float max[5]);
163 EdbSegmentCut *GetCut(int ud, int i)
164 { return (EdbSegmentCut *)(eCuts[ud]->UncheckedAt(i)); }
165 float GetCutGR() const {return eCutGR;}
166
167 void SetCond(int ud, EdbScanCond &cond) {
168 if(ud<0) return;
169 if(ud>2) return;
170 if(eCond[ud]) delete (eCond[ud]);
171 (eCond[ud]) = new EdbScanCond(cond);
172 }
173
174 EdbScanCond *GetMakeCond(int ud) {return 0;} //TODO?
176 { if(eCond[ud]) return (EdbScanCond *)eCond[ud]; else return 0; }
177
178 float OverlapX(int ud) {return (ud>0&&ud<3)? (eViewXmax[ud]-eViewXmin[ud] - eXstep[ud]): 0.; }
179 float OverlapY(int ud) {return (ud>0&&ud<3)? (eViewYmax[ud]-eViewYmin[ud] - eYstep[ud]): 0.; }
180
181 bool CopyRawDataXY( float x0, float y0, float dR, const char *file );
182
183 void SetCutLeft( int ud, float wmin );
184 void SetCutRight( int ud, float wmin );
185 void SetCutTop( int ud, float wmin );
186 void SetCutBottom( int ud, float wmin );
187
188 void FillDZMaps();
189
190 ClassDef(EdbRunAccess,2) // helper class for access to the run data
191};
192
193#endif /* ROOT_EdbRunAccess */
194
TLegendEntry * entry
Definition: Canv_SYSTEMATICS_ALLCOMBINED__RMSEnergy__vs__Energy__ELECTRON.C:130
EdbPatternsVolume * vol
Definition: RecDispNU.C:116
float min(TClonesArray *t)
Definition: bitview.cxx:275
Definition: EdbAffine.h:17
fast 2-dim histogram class (used as a basis for EdbCell2)
Definition: EdbCell2.h:19
Definition: EdbLayer.h:39
Definition: EdbPattern.h:273
Definition: EdbPattern.h:334
helper class for access to the run data
Definition: EdbRunAccess.h:23
int GetViewsArea(int ud, TArrayI &entr, int area, float &xmin, float &xmax, float &ymin, float &ymax)
Definition: EdbRunAccess.cxx:585
void SetCond(int ud, EdbScanCond &cond)
Definition: EdbRunAccess.h:167
void SetCutRight(int ud, float wmin)
Definition: EdbRunAccess.cxx:220
void ClearCuts()
Definition: EdbRunAccess.cxx:95
bool SetSegmentAtExternalSurface(EdbSegment *seg, int side)
Definition: EdbRunAccess.cxx:1167
Float_t eViewXmin[3]
Definition: EdbRunAccess.h:72
float ViewX(const EdbView *view) const
Definition: EdbRunAccess.h:145
bool InitRun(const char *runfile=0, bool do_update=false)
Definition: EdbRunAccess.cxx:112
void ReadVAfile()
Definition: EdbRunAccess.cxx:202
Bool_t eInvertSides
0 -do nothing, 1-invert sides
Definition: EdbRunAccess.h:32
Float_t eViewYmin[3]
Definition: EdbRunAccess.h:73
TGraph2D * eGraphDZ[3]
keep the base/layer1/layer2 thickness calculated using eZ1/eZ2/eZ3/eZ4 for each view
Definition: EdbRunAccess.h:47
int GetVolumeData(EdbPatternsVolume &vol, int nviews, TArrayI &srt, int &nrej)
Definition: EdbRunAccess.cxx:454
int CheckEmptyViews(EdbPattern &pat)
Definition: EdbRunAccess.cxx:793
void Print()
Definition: EdbRunAccess.cxx:103
Int_t eFirstArea
Definition: EdbRunAccess.h:55
bool InitRunFromRWC(char *rwcname, bool bAddRWD=true, const char *options="")
Definition: EdbRunAccess.cxx:242
void SetCutTop(int ud, float wmin)
Definition: EdbRunAccess.cxx:227
EdbH2 eHViewXY[3]
XY segments distribution in a view local coords.
Definition: EdbRunAccess.h:31
EdbLayer * eLayers[3]
base(0),up(1),down(2) layers
Definition: EdbRunAccess.h:60
EdbRun * eRun
pointer to the run to be accessed
Definition: EdbRunAccess.h:51
TObjArray * eCuts[3]
arrays of cuts to be applied to segments
Definition: EdbRunAccess.h:62
EdbSegment * GetRawSegmentN(int vid, int sid, int rs=0)
Definition: EdbRunAccess.cxx:1096
float CalculateSegmentChi2(EdbSegment *seg, float sx, float sy, float sz)
Definition: EdbRunAccess.cxx:1061
EdbPattern * GetVP(int ud) const
Definition: EdbRunAccess.h:117
int FillVP()
Definition: EdbRunAccess.cxx:846
int GetVolumeXY(EdbSegP &s, EdbPatternsVolume &vol)
Definition: EdbRunAccess.cxx:327
void Set0()
Definition: EdbRunAccess.cxx:62
EdbPattern * eVP[3]
Definition: EdbRunAccess.h:63
EdbScanCond * GetMakeCond(int ud)
Definition: EdbRunAccess.h:174
EdbLayer * GetLayer(int id)
Definition: EdbRunAccess.h:113
bool AcceptRawSegment(EdbView *view, int ud, EdbSegP &segP, int side, int entry)
Definition: EdbRunAccess.cxx:943
Int_t GetNviewsPerArea()
Definition: EdbRunAccess.h:100
TObjArray * eViewCorr
corrections obtained from the views alignment
Definition: EdbRunAccess.h:75
Int_t GetNareas()
Definition: EdbRunAccess.h:99
int ViewSide(const EdbView *view) const
Definition: EdbRunAccess.cxx:443
int GetViewsXY(int ud, TArrayI &entr, float x, float y, float r=200.)
Definition: EdbRunAccess.cxx:283
int Check0Views(EdbPattern &pat, int thres=1)
Definition: EdbRunAccess.cxx:773
void ApplyCorrections(const EdbView &view, EdbSegment &s, const int rs)
Definition: EdbRunAccess.cxx:1105
int GetPatternData(EdbPattern &pat, int side, int nviews, TArrayI &srt, int &nrej)
Definition: EdbRunAccess.cxx:502
float CheckMeanSegsPerView(EdbPattern &pat)
Definition: EdbRunAccess.cxx:765
int LastArea() const
Definition: EdbRunAccess.h:120
virtual ~EdbRunAccess()
Definition: EdbRunAccess.cxx:43
Float_t eYmin
Definition: EdbRunAccess.h:68
EdbScanCond * eCond[3]
Definition: EdbRunAccess.h:61
void FillDZMaps()
Definition: EdbRunAccess.cxx:1280
Int_t eLastArea
Definition: EdbRunAccess.h:56
void CheckViewStep()
Definition: EdbRunAccess.cxx:807
TGraph2D * eGraphZ[4]
keep z1/z2/z3/z4 surfaces using eZ1/eZ2/eZ3/eZ4 for each view
Definition: EdbRunAccess.h:46
TString eRunFileName
Definition: EdbRunAccess.h:50
float OverlapX(int ud)
Definition: EdbRunAccess.h:178
Int_t eNviewsPerArea
Definition: EdbRunAccess.h:58
Float_t eXmin
Definition: EdbRunAccess.h:68
void SetPixelCorrection(const char *str)
Definition: EdbRunAccess.cxx:927
Float_t ePixelCorrY
Definition: EdbRunAccess.h:41
bool PassCuts(int ud, EdbSegment &seg)
Definition: EdbRunAccess.cxx:1044
Bool_t eUseDensityAsW
in case of LASSO tracking possible to use eSigmaY as eW
Definition: EdbRunAccess.h:36
Int_t eCLUST
1-use clusters, 0 - do not
Definition: EdbRunAccess.h:27
float GetCutGR() const
Definition: EdbRunAccess.h:165
void CheckViewSize()
Definition: EdbRunAccess.cxx:1233
void AddSegmentCut(int xi, const char *cutline)
Definition: EdbRunAccess.cxx:1187
EdbRun * GetRun() const
Definition: EdbRunAccess.h:111
Float_t eXstep[3]
Definition: EdbRunAccess.h:70
float ViewY(const EdbView *view) const
Definition: EdbRunAccess.h:146
int NCuts(int ud)
Definition: EdbRunAccess.h:151
Float_t eYmax
Definition: EdbRunAccess.h:68
Int_t eAFID
if =1 - use affine transformations of the fiducial marks
Definition: EdbRunAccess.h:26
Int_t eTracking
to test tracking alorithm: -1-ignored(def),0/1 - trackings to accept
Definition: EdbRunAccess.h:44
EdbLayer * GetMakeLayer(int id)
Definition: EdbRunAccess.cxx:275
int GetViewsAreaMarg(int ud, TArrayI &entr, int area, float xmarg, float ymarg)
Definition: EdbRunAccess.cxx:635
int GetPatternXY(EdbSegP &s, int side, EdbPattern &pat, float rmin=200)
Definition: EdbRunAccess.cxx:377
bool AddRWDToRun(char *rwdname, const char *options="")
Definition: EdbRunAccess.cxx:257
Bool_t eDoViewAnalysis
fill or not the histograms for optional view analysis
Definition: EdbRunAccess.h:30
int GetVolumeArea(EdbPatternsVolume &vol, int area)
Definition: EdbRunAccess.cxx:395
int FirstArea() const
Definition: EdbRunAccess.h:119
Bool_t eUseExternalSurface
if true - set segment position corrisponding to the very external cluster
Definition: EdbRunAccess.h:28
Float_t eViewXmax[3]
Definition: EdbRunAccess.h:72
EdbSegmentCut * GetCut(int ud, int i)
Definition: EdbRunAccess.h:163
Int_t eNareas
Definition: EdbRunAccess.h:57
float SegmentWeight(const EdbSegment &s)
Definition: EdbRunAccess.cxx:935
int GetPatternXYcut(EdbSegP &s, int side, EdbPattern &pat, float dr, float dt)
Definition: EdbRunAccess.cxx:351
EdbScanCond * GetCond(int ud)
Definition: EdbRunAccess.h:175
Int_t eDoPixelCorr
apply or not pix/mic correction when read data (default is 0)
Definition: EdbRunAccess.h:39
float OverlapY(int ud)
Definition: EdbRunAccess.h:179
bool CopyRawDataXY(float x0, float y0, float dR, const char *file)
Definition: EdbRunAccess.cxx:1213
TH2F * CheckUpDownOffsets()
Definition: EdbRunAccess.cxx:1246
void SetCutLeft(int ud, float wmin)
Definition: EdbRunAccess.cxx:213
void GuessNviewsPerArea()
Definition: EdbRunAccess.cxx:165
Float_t eYstep[3]
Definition: EdbRunAccess.h:71
Float_t eViewYmax[3]
Definition: EdbRunAccess.h:73
int GetEntryXY(int ud, float x, float y)
Definition: EdbRunAccess.cxx:304
TCut eHeaderCut
header cut to be applied in run initialization
Definition: EdbRunAccess.h:43
Float_t eCutGR
grain cut (chi)
Definition: EdbRunAccess.h:66
void SetCutBottom(int ud, float wmin)
Definition: EdbRunAccess.cxx:234
Int_t eWeightAlg
0-puls, 1 - density(former eUseDensityAsW), 2-Likelyhood (eSigmaX)
Definition: EdbRunAccess.h:33
float GetRawSegmentPix(EdbSegment *seg)
Definition: EdbRunAccess.cxx:1151
void CheckRunLine()
Definition: EdbRunAccess.cxx:709
int GetPatternDataForPrediction(int id, int side, EdbPattern &pat)
Definition: EdbRunAccess.cxx:540
void PrintStat()
Definition: EdbRunAccess.cxx:672
EdbAffine2D * eAffStage2Abs
affine transformation extracted from Marks (if AFID=11)
Definition: EdbRunAccess.h:53
Float_t ePixelCorrX
pixel/micron correction factor to be applied for data
Definition: EdbRunAccess.h:40
EdbSegment * GetRawSegment(int vid, int sid, int rs=0)
Definition: EdbRunAccess.cxx:1144
Float_t eXmax
Definition: EdbRunAccess.h:68
Definition: EdbRun.h:75
Definition: EdbScanCond.h:10
Definition: EdbSegP.h:21
Definition: EdbSegmentCut.h:6
segment of the track
Definition: EdbSegment.h:63
Base scanning data object: entry into Run tree.
Definition: EdbView.h:134
Float_t GetXview() const
Definition: EdbView.h:193
Float_t GetYview() const
Definition: EdbView.h:194
EdbRun * run
Definition: check_raw.C:38
s
Definition: check_shower.C:55
int max
Definition: check_shower.C:41
TFile * file
Definition: write_pvr.C:3
const char * fname
Definition: mc2raw.cxx:41
UInt_t id
Definition: tlg2couples.C:117
void r(int rid=2)
Definition: test.C:201