FEDRA emulsion software from the OPERA Collaboration
EdbViewMap.h
Go to the documentation of this file.
1 #ifndef ROOT_EdbViewMap
2 #define ROOT_EdbViewMap
3 
5 // //
6 // EdbViewMap //
7 // //
8 // views positions correction using alignment data //
9 // //
11 #include "EdbRun.h"
12 #include "TIndexCell.h"
13 #include "EdbCell2.h"
14 #include "EdbLayer.h"
15 #include "TVector2.h"
16 #include "TH2D.h"
17 
18 //______________________________________________________________________________
19 #define make_bit(_i_) (1 << _i_)
20 
21 inline bool test_bit(int bit_,int flags_)
22 {
23  return (flags_ & bit_) != 0;
24 };
25 inline bool test_ith_bit(int i_,int flags_)
26 {
27  return test_bit(make_bit(i_),flags_);
28 };
29 
30 //______________________________________________________________________________
31 struct AApv //side-by-side alignment
32 {
34  float quality; // aligment quality coefficient (from 0 to 1)
35 };
36 
37 //______________________________________________________________________________
38 struct AView // view and neighbouring
39 {
41  int nalv;
42  AApv *alv[16]; // all alignments with this header
45  float quality; // view quality coefficient (from 0 to 1)
46 };
47 
48 //______________________________________________________________________________
49 struct AArea
50 {
51  int ilast; // index of the last filled slot
52  int nview; // length of the view array
54 };
55 
56 //______________________________________________________________________________
57 struct ASide
58 {
60  int narea;
61 };
62 
63 //______________________________________________________________________________
64 struct ARun
65 {
66  ASide side[2];
67 };
68 
69 //______________________________________________________________________________
70 class EdbViewMap : public TObject {
71 
72  public:
73  Int_t eNcp; // number of objects in eALcp
75 
76  Int_t eNvh; // number of headers
77  TObjArray eViewHeaders; // read headers for all views here
78 
79  Int_t eNpvh; // number of headers
80  TObjArray ePinViewHeaders; // read headers for all pinned views here
81 
82  ARun eAR; // structures with pointers to the above containers
83 
84  TTree *eAHT; //aligned headers tree
85 
86  Int_t eAlgorithm; // algorithm used for correction: 0-bestNeigbour, 1-allNeigbours, 2,3 - hysteresis corr
87 
88  Int_t ePinPointID; // pin point ID to be used for this alignment pinID=(1000 + 2*pointID+side)
89 
90  TH2D *eHX0odd; // odd lines x-offset side=0
91  TH2D *eHX0even; // even lines x-offset
92  TH2D *eHY0odd; // odd lines x-offset
93  TH2D *eHY0even; // even lines x-offset
94  TH2D *eHX1odd; // odd lines x-offset side=1
95  TH2D *eHX1even; // even lines x-offset
96  TH2D *eHY1odd; // odd lines x-offset
97  TH2D *eHY1even; // even lines x-offset
98 
99  public:
100  EdbViewMap();
101  virtual ~EdbViewMap();
102 
103  void ReadViewsHeaders(const char *file, TCut &cut);
104  void ReadPinViewsHeaders(const char *file);
105  void ReadViewAlign(const char *file);
106  void MakeAHTnocorr();
107  void CorrectLines( TTree &tree );
108  void SaveLinesCorrToRun(const char *fin);
109 
110  void AddInverseAlign();
112  EdbViewHeader *GetHeader(int i) { return (EdbViewHeader*)(eViewHeaders.At(i)); }
114  int ViewSide(const EdbViewHeader &vh) const { return vh.GetNframesTop()==0?0:1; }
115 
116  void InitAR();
117  void FillAR();
119  AView *GetAView(int side, int area, int view);
120  AArea *GetAArea(int side, int area) { return eAR.side[side].area[area]; }
121  void CheckViewFrameAlignQuality(const char *file);
122  void FillALcp();
123 
124  void DoCorrection();
125 
126  int PinViewID(int pinpoint, int side) {return -(1000+2*pinpoint+side); }
127  int PinPoint(int pinviewid) {return (-1000-pinviewid)/2; }
128  void DoCorrection1( AArea &area );
129  //void CorrectPinned( AArea &area );
131  float ViewCorrectability(AView &v);
132  float ViewCorrectability1(AView &v);
133  float ViewCorrectabilityAll(AView &v);
134  void DoCorrectionBestNeib( AView &v );
135  void DoCorrectionAllNeib( AView &v );
136 
137  float Quality( AApv &apv );
138  void Transform( AView &v, const AlignmentParView &apv );
139  void CorrectToStage();
140  void FillAHT( AlignmentParView *apv, EdbViewHeader *vn, EdbViewHeader *vc, EdbAffine2D *aff, float w, TTree *&aht, const char *name );
141 
142  void SaveCorrToRun(const char *fin);
143  void ConvertRun(const char *fin, const char *fout);
144  void CheckView(int side, int area, int idview);
145  void CheckView(AView *v);
146 
147  static bool IsApplied( const AlignmentParFrame &apf) {return test_ith_bit(0,apf.flag);}
148  static bool IsFound( const AlignmentParFrame &apf) {return test_ith_bit(1,apf.flag);}
149  static bool IsRecovered( const AlignmentParFrame &apf) {return test_ith_bit(2,apf.flag);}
150 
151  static bool IsApplied( const AlignmentParView &apv) {return test_ith_bit(0,apv.flag);}
152  static bool IsPin( const AlignmentParView &apv) {return test_ith_bit(1,apv.flag);}
153  static bool IsFound( const AlignmentParView &apv) {return test_ith_bit(2,apv.flag);}
154 
155  bool IsBug0(AView &v1, AView &v2);
156 
157  void CorrectCols(TTree &tree);
158  void SaveColsCorrToRun(const char *fin);
159  void t(const char *fin, const char *fout, int algorithm, const char *cut="1");
160 
161  ClassDef(EdbViewMap,1) // views map
162 };
163 
164 #endif /* ROOT_EdbViewMap */
165 
#define make_bit(_i_)
Definition: EdbViewMap.h:19
bool test_bit(int bit_, int flags_)
Definition: EdbViewMap.h:21
bool test_ith_bit(int i_, int flags_)
Definition: EdbViewMap.h:25
TCut cut
Definition: check_shower.C:6
Definition: EdbAffine.h:17
Definition: EdbView.h:26
Int_t GetNframesTop() const
Definition: EdbView.h:120
Definition: EdbViewMap.h:70
AlignmentParView ** eALcp
Definition: EdbViewMap.h:74
EdbViewHeader * GetViewHeader(AlignmentParView &apv, int fs)
Definition: EdbViewMap.cxx:627
int ViewSide(const EdbViewHeader &vh) const
Definition: EdbViewMap.h:114
void MakeAHTnocorr()
Definition: EdbViewMap.cxx:656
Int_t eAlgorithm
Definition: EdbViewMap.h:86
Int_t ePinPointID
Definition: EdbViewMap.h:88
EdbViewHeader * GetPinHeader(int i)
Definition: EdbViewMap.h:113
void DoCorrection()
Definition: EdbViewMap.cxx:505
void CheckView(int side, int area, int idview)
Definition: EdbViewMap.cxx:325
TObjArray eViewHeaders
Definition: EdbViewMap.h:77
void ReadViewsHeaders(const char *file, TCut &cut)
Definition: EdbViewMap.cxx:131
static bool IsRecovered(const AlignmentParFrame &apf)
Definition: EdbViewMap.h:149
TObjArray ePinViewHeaders
Definition: EdbViewMap.h:80
TH2D * eHX0odd
Definition: EdbViewMap.h:90
void FillALcp()
Definition: EdbViewMap.cxx:269
TTree * eAHT
Definition: EdbViewMap.h:84
void CorrectToStage()
Definition: EdbViewMap.cxx:513
EdbViewHeader * GetHeader(int i)
Definition: EdbViewMap.h:112
static bool IsApplied(const AlignmentParFrame &apf)
Definition: EdbViewMap.h:147
void ConvertRun(const char *fin, const char *fout)
Definition: EdbViewMap.cxx:549
static bool IsApplied(const AlignmentParView &apv)
Definition: EdbViewMap.h:151
void SaveCorrToRun(const char *fin)
Definition: EdbViewMap.cxx:582
TH2D * eHY1even
Definition: EdbViewMap.h:97
bool IsBug0(AView &v1, AView &v2)
Definition: EdbViewMap.cxx:177
void CheckViewFrameAlignQuality(const char *file)
Definition: EdbViewMap.cxx:226
void DoCorrectionAllNeib(AView &v)
Definition: EdbViewMap.cxx:379
int PinPoint(int pinviewid)
Definition: EdbViewMap.h:127
float ViewCorrectability1(AView &v)
Definition: EdbViewMap.cxx:430
int PinViewID(int pinpoint, int side)
Definition: EdbViewMap.h:126
static bool IsFound(const AlignmentParFrame &apf)
Definition: EdbViewMap.h:148
TH2D * eHY0odd
Definition: EdbViewMap.h:92
float Quality(AApv &apv)
Definition: EdbViewMap.cxx:304
void ReadPinViewsHeaders(const char *file)
Definition: EdbViewMap.cxx:157
void Transform(AView &v, const AlignmentParView &apv)
Definition: EdbViewMap.cxx:318
float ViewCorrectabilityAll(AView &v)
Definition: EdbViewMap.cxx:449
float ViewCorrectability(AView &v)
Definition: EdbViewMap.cxx:422
virtual ~EdbViewMap()
Definition: EdbViewMap.cxx:38
void InitAR()
Definition: EdbViewMap.cxx:44
Int_t eNcp
Definition: EdbViewMap.h:73
Int_t eNpvh
Definition: EdbViewMap.h:79
TH2D * eHY0even
Definition: EdbViewMap.h:93
AView * GetAView(EdbViewHeader &h)
Definition: EdbViewMap.cxx:256
EdbViewMap()
Definition: EdbViewMap.cxx:20
ARun eAR
Definition: EdbViewMap.h:82
void DoCorrection1(AArea &area)
Definition: EdbViewMap.cxx:489
void SaveLinesCorrToRun(const char *fin)
Definition: EdbViewMap.cxx:747
TH2D * eHX1odd
Definition: EdbViewMap.h:94
void AddInverseAlign()
Definition: EdbViewMap.cxx:206
void SaveColsCorrToRun(const char *fin)
Definition: EdbViewMap.cxx:806
void FillAHT(AlignmentParView *apv, EdbViewHeader *vn, EdbViewHeader *vc, EdbAffine2D *aff, float w, TTree *&aht, const char *name)
Definition: EdbViewMap.cxx:607
AView * SelectBestNotCorrected(AArea &area)
Definition: EdbViewMap.cxx:468
TH2D * eHY1odd
Definition: EdbViewMap.h:96
Int_t eNvh
read tree with alignment parameters here
Definition: EdbViewMap.h:76
static bool IsPin(const AlignmentParView &apv)
Definition: EdbViewMap.h:152
void CorrectLines(TTree &tree)
Definition: EdbViewMap.cxx:678
void t(const char *fin, const char *fout, int algorithm, const char *cut="1")
Definition: EdbViewMap.cxx:865
TH2D * eHX0even
Definition: EdbViewMap.h:91
AArea * GetAArea(int side, int area)
Definition: EdbViewMap.h:120
void FillAR()
Definition: EdbViewMap.cxx:91
TH2D * eHX1even
Definition: EdbViewMap.h:95
void CorrectCols(TTree &tree)
Definition: EdbViewMap.cxx:720
void ReadViewAlign(const char *file)
Definition: EdbViewMap.cxx:186
static bool IsFound(const AlignmentParView &apv)
Definition: EdbViewMap.h:153
void DoCorrectionBestNeib(AView &v)
Definition: EdbViewMap.cxx:346
const char * name
Definition: merge_Energy_SytematicSources_Electron.C:24
Definition: EdbViewMap.h:32
AlignmentParView * apv
Definition: EdbViewMap.h:33
float quality
Definition: EdbViewMap.h:34
Definition: EdbViewMap.h:50
int ilast
Definition: EdbViewMap.h:51
int nview
Definition: EdbViewMap.h:52
AView ** view
Definition: EdbViewMap.h:53
Definition: EdbViewMap.h:65
ASide side[2]
Definition: EdbViewMap.h:66
Definition: EdbViewMap.h:58
int narea
Definition: EdbViewMap.h:60
AArea ** area
Definition: EdbViewMap.h:59
Definition: EdbViewMap.h:39
EdbAffine2D aff
Definition: EdbViewMap.h:44
AApv * alv[16]
Definition: EdbViewMap.h:42
bool isCorrected
Definition: EdbViewMap.h:43
int nalv
Definition: EdbViewMap.h:41
float quality
Definition: EdbViewMap.h:45
EdbViewHeader * header
Definition: EdbViewMap.h:40
Definition: EdbRun.h:52
Int_t flag
Definition: EdbRun.h:70
Definition: EdbRun.h:32
Int_t flag
Definition: EdbRun.h:48
void w(int rid=2, int nviews=2)
Definition: test.C:27
TFile * file
Definition: write_pvr.C:3