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