FEDRA emulsion software from the OPERA Collaboration
EdbAlignmentV.h
Go to the documentation of this file.
1#ifndef ROOT_EdbAlignmentV
2#define ROOT_EdbAlignmentV
3
4#include "EdbBrick.h"
5#include "EdbPattern.h"
6#include "EdbAffine.h"
7#include "EdbCell1.h"
8#include "EdbCell2.h"
9#include "EdbSegCorr.h"
10
12class EdbAlignmentV : public TObject
13{
14 public:
15
16 Float_t eDVsame[4];
17
19 Float_t eXmarg,eYmarg;
20
21 TObjArray eS[2];
22
23 Bool_t eUseAffCorr;
26
27 EdbH1 eH[2][7];
30
32
34
36
37 public:
39 virtual ~EdbAlignmentV();
40
42 void InitOutputFile(const char *file="report_al.root", const char *option="RECREATE");
43 void CloseOutputFile();
44 void InitHx( int n, float min, float max) { eH[0][0].InitH1(n, min, max); }
45 void InitHy( int n, float min, float max) { eH[0][1].InitH1(n, min, max); }
46 void InitHz( int n, float min, float max) { eH[0][2].InitH1(n, min, max); }
47 void InitHphi( int n, float min, float max) { eH[0][6].InitH1(n, min, max); }
48 void InitHshr0( int n, float min, float max) { eH[0][5].InitH1(n, min, max); }
49 void InitHshr1( int n, float min, float max) { eH[1][5].InitH1(n, min, max); }
50 char *StrDVsame() const {return Form("%7.2f %7.2f %8.5f %8.5f",eDVsame[0],eDVsame[1],eDVsame[2],eDVsame[3]); }
51 Bool_t SideOK(int side);
52
54 void DefineGuessCell( float xmin1, float xmax1, float ymin1, float ymax1,
55 float xmin2, float xmax2, float ymin2, float ymax2, int np1, int np2, float binOK);
56 void InitPatCellN( EdbCell2 &cell, EdbPattern &pat, int nx, int ny);
57 void InitPatCellBin( int side, EdbPattern &pat, float binx, float biny);
58 void FillCell(int side, EdbPattern &pat); // limits should be already defined
59 void FillCell(int side, TObjArray &pat); // limits should be already defined
60 void FillGuessCell(EdbPattern &p1, EdbPattern &p2, float binOK=1., float offsetMax=2000.);
61 void FillGuessCell(TObjArray &p1, TObjArray &p2, float binOK=1., float offsetMax=2000.);
62 void HDistance(EdbPattern &p1, EdbPattern &p2, float dxMax, float dyMax);
63 int OptimiseVar1(int side, int ivar, EdbH2 *hdxy=0, EdbH2 *hdtxy=0);
64 void OptimiseVar2(int side1, int ivar1, int side2, int ivar2, EdbH2 &h12, EdbH2 *hdxy=0, EdbH2 *hdtxty=0);
65 Int_t Ncoins( float dvlim[4], EdbH2 *hdxy=0, EdbH2 *hdtxty=0, TObjArray *sel1=0, TObjArray *sel2=0 );
66 Bool_t ValidCoinsidence(EdbSegP &s1, EdbSegP &s2, float dvlim[4], float dvfound[4] );
68 int FillCombinations();
69 int FillCombinations(float dv[4], float dxMax, float dyMax, bool doFill);
70 int DoubletsFilterOut(int checkview, TH2F *hxy=0, TH2F *htxty=0 );
71 int SelectIsolated();
72 int SelectBestCouple();
73 float CoupleQuality( EdbSegP &s1, EdbSegP &s2 );
74
76 Int_t Ncp() {return CheckEqualArr( eS[0], eS[1]); }
77 void AddSegCouple(EdbSegP *s1, EdbSegP *s2) { eS[0].Add(s1); eS[1].Add(s2); }
78 Float_t CalcMeanDiff(int ivar);
79 Float_t CalcFractMeanDiff(int ivar, float fraction);
80 Float_t FindDensityPeak(TArrayF &arr, float fraction);
81 Float_t CalcMeanShr(float tmin=0.1, float tmax=2.);
82 Float_t CalcMeanDZ(float tmin=0.1, float tmax=2.);
83 Int_t CalcApplyMeanDiff();
85 Int_t CalcAffFull();
86
87 Int_t FindDiff(TObjArray &arr1, TObjArray &arr2, float dvlim[4], float dvfound[4] );
88 Int_t FindCorrDiff(float dvsame[4], int side=0, int nlim=10);
89 float FineCorrZ() { return FineCorrZ(eS[0], eS[1]); }
90 float FineCorrZ(TObjArray &sel1, TObjArray &sel2);
91 float FineCorrPhi(TObjArray &sel1, TObjArray &sel2);
92 static Int_t CheckEqualArr(TObjArray &arr1, TObjArray &arr2);
93
94 Int_t CalculateAffXYTurn( EdbAffine2D &aff) {return CalculateAffXYTurn( eS[0], eS[1], aff);}
95 Int_t CalculateAffXY( EdbAffine2D &aff) {return CalculateAffXY( eS[0], eS[1], aff);}
96 Int_t CalculateAffTXTY( EdbAffine2D &aff) {return CalculateAffTXTY( eS[0], eS[1], aff);}
97 Int_t CalculateAffXYTurn(TObjArray &arr1, TObjArray &arr2, EdbAffine2D &aff);
98 Int_t CalculateAffXY(TObjArray &arr1, TObjArray &arr2, EdbAffine2D &aff);
99 Int_t CalculateAffTXTY(TObjArray &arr1, TObjArray &arr2, EdbAffine2D &aff);
100 Int_t CalculateAffTXTYTurn(TObjArray &arr1, TObjArray &arr2, EdbAffine2D &aff);
101
103 void CorrToCoG(int side, EdbPattern &p);
104 void CorrToCoG(int side, TObjArray &p);
105 void FillThetaHist(int side, EdbH2 &htxy);
106 float Xmin(int side,EdbPattern &p);
107 float Xmax(int side,EdbPattern &p);
108 float Ymin(int side,EdbPattern &p);
109 float Ymax(int side,EdbPattern &p);
110 float Xmin(int side,TObjArray &p);
111 float Xmax(int side,TObjArray &p);
112 float Ymin(int side,TObjArray &p);
113 float Ymax(int side,TObjArray &p);
114 void ApplyLimitsOffset( float &xmin1, float &xmax1, float &xmin2, float &xmax2, float offsetMax);
115
117
118 float X( int side, EdbSegP &s) { return eUseAffCorr? eCorrL[side].X(s) : eCorr[side].X(s); }
119 float Y( int side, EdbSegP &s) { return eUseAffCorr? eCorrL[side].Y(s) : eCorr[side].Y(s); }
120 float TX( int side, EdbSegP &s) { return eUseAffCorr? eCorrL[side].TX(s) : eCorr[side].TX(s); }
121 float TY( int side, EdbSegP &s) { return eUseAffCorr? eCorrL[side].TY(s) : eCorr[side].TY(s); }
122 float Var(int side, EdbSegP &s, int ivar) {switch(ivar) {
123 case(0): return X(side,s);
124 case(1): return Y(side,s);
125 case(2): return TX(side,s);
126 case(3): return TY(side,s); } return 0;
127 }
128 float Var(int side, int iseg, int ivar) { return Var(side,*((EdbSegP*)eS[side].UncheckedAt(iseg)),ivar); }
129 void Corr2Aff(EdbLayer &layer);
130 void Corr2Aff(EdbSegCorr &corr, EdbLayer &layer);
131
132 ClassDef(EdbAlignmentV,1) // universal basic alignment class
133};
134#endif /* ROOT_EdbAlignmentV */
float min(TClonesArray *t)
Definition: bitview.cxx:275
Definition: EdbAffine.h:17
universal basic alignment class
Definition: EdbAlignmentV.h:13
float Y(int side, EdbSegP &s)
Definition: EdbAlignmentV.h:119
void InitHz(int n, float min, float max)
Definition: EdbAlignmentV.h:46
static Int_t CheckEqualArr(TObjArray &arr1, TObjArray &arr2)
Definition: EdbAlignmentV.cxx:389
float Var(int side, int iseg, int ivar)
Definition: EdbAlignmentV.h:128
int SelectIsolated()
Definition: EdbAlignmentV.cxx:116
Bool_t SideOK(int side)
Definition: EdbAlignmentV.cxx:379
Int_t Ncp()
Functions applied to the selected parallel arrays.
Definition: EdbAlignmentV.h:76
float TY(int side, EdbSegP &s)
Definition: EdbAlignmentV.h:121
float Ymin(int side, EdbPattern &p)
Definition: EdbAlignmentV.cxx:1065
int SelectBestCouple()
Definition: EdbAlignmentV.cxx:152
void ApplyLimitsOffset(float &xmin1, float &xmax1, float &xmin2, float &xmax2, float offsetMax)
Definition: EdbAlignmentV.cxx:847
EdbH2 eHxy
position 2d histo to be used in OptimiseVar2
Definition: EdbAlignmentV.h:31
virtual ~EdbAlignmentV()
Definition: EdbAlignmentV.cxx:33
void CorrToCoG(int side, EdbPattern &p)
functions alpplied to the individual patterns
Definition: EdbAlignmentV.cxx:430
TFile * eOutputFile
Definition: EdbAlignmentV.h:35
void Corr2Aff(EdbLayer &layer)
Definition: EdbAlignmentV.cxx:1027
void InitPatCellBin(int side, EdbPattern &pat, float binx, float biny)
Definition: EdbAlignmentV.cxx:830
Float_t FindDensityPeak(TArrayF &arr, float fraction)
Definition: EdbAlignmentV.cxx:563
void InitPatCellN(EdbCell2 &cell, EdbPattern &pat, int nx, int ny)
Definition: EdbAlignmentV.cxx:817
Int_t Ncoins(float dvlim[4], EdbH2 *hdxy=0, EdbH2 *hdtxty=0, TObjArray *sel1=0, TObjArray *sel2=0)
Definition: EdbAlignmentV.cxx:722
void AddSegCouple(EdbSegP *s1, EdbSegP *s2)
Definition: EdbAlignmentV.h:77
Float_t eDVsame[4]
(dx,dy,dtx,dty) condition for the coinsidence
Definition: EdbAlignmentV.h:16
EdbH1 eH[2][7]
Definition: EdbAlignmentV.h:27
Bool_t IsInsideDVsame(EdbSegP &s1, EdbSegP &s2)
Definition: EdbAlignmentV.cxx:57
void InitHphi(int n, float min, float max)
Definition: EdbAlignmentV.h:47
Float_t CalcFractMeanDiff(int ivar, float fraction)
Definition: EdbAlignmentV.cxx:551
int OptimiseVar1(int side, int ivar, EdbH2 *hdxy=0, EdbH2 *hdtxy=0)
Definition: EdbAlignmentV.cxx:278
void InitHshr0(int n, float min, float max)
Definition: EdbAlignmentV.h:48
Bool_t ValidCoinsidence(EdbSegP &s1, EdbSegP &s2, float dvlim[4], float dvfound[4])
Definition: EdbAlignmentV.cxx:709
Int_t CalculateAffXY(EdbAffine2D &aff)
Definition: EdbAlignmentV.h:95
TH1I * eDoubletsRate
can be filled in FillCombinations()
Definition: EdbAlignmentV.h:33
void OptimiseVar2(int side1, int ivar1, int side2, int ivar2, EdbH2 &h12, EdbH2 *hdxy=0, EdbH2 *hdtxty=0)
Definition: EdbAlignmentV.cxx:323
void InitHx(int n, float min, float max)
Definition: EdbAlignmentV.h:44
float FineCorrPhi(TObjArray &sel1, TObjArray &sel2)
Definition: EdbAlignmentV.cxx:464
Int_t CalculateAffTXTYTurn(TObjArray &arr1, TObjArray &arr2, EdbAffine2D &aff)
Definition: EdbAlignmentV.cxx:998
EdbCell2 ePC[2]
2-d position cells with patterns segments
Definition: EdbAlignmentV.h:18
Bool_t eUseAffCorr
if "true" - use eCorrL for corrections
Definition: EdbAlignmentV.h:23
void InitHy(int n, float min, float max)
Definition: EdbAlignmentV.h:45
float Xmax(int side, EdbPattern &p)
Definition: EdbAlignmentV.cxx:1054
void DefineGuessCell(float xmin1, float xmax1, float ymin1, float ymax1, float xmin2, float xmax2, float ymin2, float ymax2, int np1, int np2, float binOK)
Selector functions.
Definition: EdbAlignmentV.cxx:858
EdbLayer eCorrL[2]
corrections in form of affine transformations - the final output
Definition: EdbAlignmentV.h:25
int DoubletsFilterOut(int checkview, TH2F *hxy=0, TH2F *htxty=0)
Definition: EdbAlignmentV.cxx:67
Float_t eYmarg
margins for the cell definition
Definition: EdbAlignmentV.h:19
Float_t CalcMeanDZ(float tmin=0.1, float tmax=2.)
Definition: EdbAlignmentV.cxx:509
void InitHshr1(int n, float min, float max)
Definition: EdbAlignmentV.h:49
char * StrDVsame() const
Definition: EdbAlignmentV.h:50
Float_t eXmarg
Definition: EdbAlignmentV.h:19
Int_t FindDiff(TObjArray &arr1, TObjArray &arr2, float dvlim[4], float dvfound[4])
Definition: EdbAlignmentV.cxx:682
float Var(int side, EdbSegP &s, int ivar)
Definition: EdbAlignmentV.h:122
Int_t CalculateAffTXTY(EdbAffine2D &aff)
Definition: EdbAlignmentV.h:96
Int_t CalculateAffXYTurn(EdbAffine2D &aff)
Definition: EdbAlignmentV.h:94
float X(int side, EdbSegP &s)
Correction parameters handling.
Definition: EdbAlignmentV.h:118
float Ymax(int side, EdbPattern &p)
Definition: EdbAlignmentV.cxx:1076
Int_t CalcAffFull()
Definition: EdbAlignmentV.cxx:614
void InitOutputFile(const char *file="report_al.root", const char *option="RECREATE")
IO, initialization and finalization functions.
Definition: EdbAlignmentV.cxx:41
void FillGuessCell(EdbPattern &p1, EdbPattern &p2, float binOK=1., float offsetMax=2000.)
Definition: EdbAlignmentV.cxx:880
float TX(int side, EdbSegP &s)
Definition: EdbAlignmentV.h:120
int FillCombinations()
Definition: EdbAlignmentV.cxx:208
float Xmin(int side, EdbPattern &p)
Definition: EdbAlignmentV.cxx:1043
float CoupleQuality(EdbSegP &s1, EdbSegP &s2)
Definition: EdbAlignmentV.cxx:189
void FillCell(int side, EdbPattern &pat)
Definition: EdbAlignmentV.cxx:927
void FillThetaHist(int side, EdbH2 &htxy)
Definition: EdbAlignmentV.cxx:196
EdbSegCorr eCorr[2]
corrections for side 1 and 2 (v[7]) - the result of the alignment
Definition: EdbAlignmentV.h:24
Float_t CalcMeanDiff(int ivar)
Definition: EdbAlignmentV.cxx:536
TObjArray eS[2]
"parallel" arrays with the selected combinations of segments
Definition: EdbAlignmentV.h:21
float FineCorrZ()
Definition: EdbAlignmentV.h:89
void HDistance(EdbPattern &p1, EdbPattern &p2, float dxMax, float dyMax)
Definition: EdbAlignmentV.cxx:752
void CloseOutputFile()
Definition: EdbAlignmentV.cxx:48
Int_t CalcApplyFractMeanDiff()
Definition: EdbAlignmentV.cxx:591
Int_t CalcApplyMeanDiff()
Definition: EdbAlignmentV.cxx:642
Float_t CalcMeanShr(float tmin=0.1, float tmax=2.)
Definition: EdbAlignmentV.cxx:488
Int_t FindCorrDiff(float dvsame[4], int side=0, int nlim=10)
Definition: EdbAlignmentV.cxx:665
EdbAlignmentV()
Definition: EdbAlignmentV.cxx:24
class to group 2-dim objects
Definition: EdbCell2.h:148
fast 2-dim histogram class (used as a basis for EdbCell1)
Definition: EdbCell1.h:17
int InitH1(const EdbH1 &h)
Definition: EdbCell1.h:38
fast 2-dim histogram class (used as a basis for EdbCell2)
Definition: EdbCell2.h:19
Definition: EdbLayer.h:39
float Y() const
Definition: EdbLayer.h:76
float X() const
Definition: EdbLayer.h:75
float TY() const
Definition: EdbLayer.h:79
float TX() const
Definition: EdbLayer.h:78
Definition: EdbPattern.h:273
Definition: EdbSegCorr.h:8
float TX(EdbSegP &s)
Definition: EdbSegCorr.h:34
float X(EdbSegP &s)
Definition: EdbSegCorr.h:25
float Y(EdbSegP &s)
Definition: EdbSegCorr.h:26
float TY(EdbSegP &s)
Definition: EdbSegCorr.h:35
Definition: EdbSegP.h:21
s
Definition: check_shower.C:55
int max
Definition: check_shower.C:41
EdbSegP * s1
Definition: tlg2couples.C:29
EdbSegP * s2
Definition: tlg2couples.C:30
TFile * file
Definition: write_pvr.C:3
p
Definition: testBGReduction_AllMethods.C:8