FEDRA emulsion software from the OPERA Collaboration
EdbPositionAlignment.h
Go to the documentation of this file.
1#ifndef ROOT_EdbPositionAlignment
2#define ROOT_EdbPositionAlignment
3
4//#include <TNtuple.h>
5//#include <TString.h>
6#include "EdbBrick.h"
7#include "EdbPattern.h"
8#include "EdbAffine.h"
9#include "EdbCell1.h"
10#include "EdbPatCell2.h"
11
13class EdbPositionAlignment : public TObject
14{
15public:
16 // service objects:
18 TObjArray eComb1, eComb2;
19 TObjArray eTracks;
20 TObjArray eSegCouples;
22
23 // input parameters:
24 float eX0, eY0;
25
26 Float_t eXcell, eYcell;
27 Float_t eDTXmax,eDTYmax;
28 Float_t eBinX, eBinY;
29
30 Float_t eDXmin, eDYmin;
31 Float_t eDTXmin, eDTYmin;
32 Float_t eRpeak;
33
34 // z-selection block:
35 Float_t eZ1from,eZ1to;
36 Float_t eZ2from,eZ2to;
38
39 // results of the z-selection:
40 Float_t eZ1peak, eZ2peak;
41 Float_t eXpeak,eYpeak;
42 Int_t eNpeak;
46
47 TString eSmoothKernel;
48
49 TTree *ePosTree;
50
51 // linking:
52 Float_t eS0x,eS0y,eS0tx,eS0ty;
53 Float_t eWbaseMin;
54 Float_t eChi2Max;
55
56 // shrinkage-selection block:
60 // results of the shrinkage selection:
63
64
65 Bool_t eDoRot;
67
68public:
70 virtual ~EdbPositionAlignment();
71
72 bool ActivatePosTree(const char *name="postree");
73 int WritePosTree();
74 int ReadPosTree(TTree *tree, EdbPattern *p=0, EdbPattern *p1=0, EdbPattern *p2=0, TEventList *lst=0 );
75 int FillPosTree( float dz1, float dz2, int flag); //{ return FillPosTree(eComb1,eComb2,dz1,dz2,flag); }
76 //int FillPosTree(TObjArray &arr1,TObjArray &arr2, float dz1, float dz2, int flag);
77 //int FillPosTree(EdbPattern &p1, EdbPattern &p2, float dz1, float dz2, int flag);
78 void PrintStat();
79 void PrintSummary();
80
81 int Align();
82
83 int SelectZone( float min[2], float max[2], TObjArray &arr1, TObjArray &arr2, float maxDens );
84 int SelectZoneSide( EdbPatCell2 &pc, float min[2], float max[2], TObjArray &arr, int nmax=kMaxInt );
85 static int SelectBestComptons( TObjArray &a, TObjArray &arr, int nmax);
86
87 int FillArrays(EdbPattern &p1 , EdbPattern &p2);
88 int FillArrays(TObjArray &arr1, TObjArray &arr2, float xymin[2], float xymax[2] );
89 int SpotsFilterOut(int nmax);
90 int DoubletsFilterOut(bool checkview=true);
91 int DoubletsFilterOutSide(EdbPatCell2 &pc, bool checkview=true);
92 int FillCombinations();
93 int FillCombinations(EdbPatCell2 &pc1, EdbPatCell2 &pc2, float dx, float dy, float dtx, float dty);
94
95 int SelectNarrowPeakDXDY(float dr, EdbH2 &hxy);
96 void PositionPlotA(EdbH2 &hd, float DR=0, TObjArray *arr1=0, TObjArray *arr2=0);
97 void FindDiff(TObjArray &arr1, TObjArray &arr2, EdbPatCell2 &pc1, EdbPatCell2 &pc2,
98 float &dx, float &dy, float &dtx, float &dty );
99 void FindDiff12(float &dx, float &dy, float &dtx, float &dty );
100 void FindDiff10(float &dx, float &dy, float &dtx, float &dty );
101 void FindDiff20(float &dx, float &dy, float &dtx, float &dty );
102 void AlignWithTracks(int nang=3, int npos=0);
103 void FindCorrections(EdbPattern &pat1, EdbPattern &pat2, float DZ, bool doShrink);
104
105 void PositionPlot(float dz1, float dz2, EdbH2 &hd);
106 void PositionPlot(EdbH2 &hd);
107 void Zselection(EdbH2 &hd);
108
109 void ShrinkageSelection(float dzbase);
110 int ShrinkageSelectionSide(EdbPatCell2 &pc1, EdbPatCell2 &pc2, EdbH2 &hshr, int nstep, float deltaShr);
111 int Link();
112 //int Link(EdbPattern &p1, EdbPattern &p2);
113
114 float Xcorr(EdbSegP &s, float dz) {return s.X() + dz*s.TX();}
115 float Ycorr(EdbSegP &s, float dz) {return s.Y() + dz*s.TY();}
116 float Xcorr(EdbSegP &s, float dz, float dx) {return dx + s.X() + dz*s.TX();}
117 float Ycorr(EdbSegP &s, float dz, float dy) {return dy + s.Y() + dz*s.TY();}
118
119 int SelectPeak(EdbPattern &p1,EdbPattern &p2, float dx, float dy, float dz1, float dz2 );
120 int SelectPeak(EdbPattern &p1,EdbPattern &p2, float dx=10, float dy=10 )
121 { return SelectPeak(p1,p2,dx,dy,eZ1peak,eZ2peak); }
122
124
125 void RankCouples0();
126 void RankCouples();
127 void RankCouples( TObjArray &arr1,TObjArray &arr2, TObjArray &arrtr );
128 void RankCouplesFast( TObjArray &arrtr );
129
132
133 // void ApplyCorrections(EdbPlateP &plate);
134
135 int WideSearchXY(EdbPattern &pat1, EdbPattern &pat2, EdbH2 &hxy, float dz, float xmin, float xmax, float ymin, float ymax);
136
137 void SaveAsTree(EdbPattern &pat, const char *name);
138
139
140 ClassDef(EdbPositionAlignment,1) // new alignment class developed mainly for compton search
141};
142#endif /* ROOT_EdbPositionAlignment */
brick dz
Definition: RecDispMC.C:107
TObjArray * arrtr
Definition: RecDispMC.C:129
void a()
Definition: check_aligned.C:59
float min(TClonesArray *t)
Definition: bitview.cxx:275
Definition: EdbAffine.h:17
fast 2-dim histogram class (used as a basis for EdbCell1)
Definition: EdbCell1.h:17
fast 2-dim histogram class (used as a basis for EdbCell2)
Definition: EdbCell2.h:19
helper class to analyse the single pattern
Definition: EdbPatCell2.h:10
float eDX
Definition: EdbPatCell2.h:18
float eDTX
Definition: EdbPatCell2.h:20
float eDY
Definition: EdbPatCell2.h:18
float eDTY
corrections to be applied if eApplyCorr==true
Definition: EdbPatCell2.h:20
Definition: EdbPattern.h:273
new alignment class developed mainly for compton search
Definition: EdbPositionAlignment.h:14
void FindDiff10(float &dx, float &dy, float &dtx, float &dty)
Definition: EdbPositionAlignment.cxx:955
EdbH1 eRot
definition of the rotation steps
Definition: EdbPositionAlignment.h:66
Float_t eRpeak
coordinate peak acceptance
Definition: EdbPositionAlignment.h:32
TTree * ePosTree
optional: tree with s1:s2 for the selected combinations
Definition: EdbPositionAlignment.h:49
EdbPatCell2 ePC
cells with the pointers to tracks
Definition: EdbPositionAlignment.h:21
void FindDiff12(float &dx, float &dy, float &dtx, float &dty)
Definition: EdbPositionAlignment.cxx:949
Int_t eNShr1step
Definition: EdbPositionAlignment.h:59
float Ycorr(EdbSegP &s, float dz)
Definition: EdbPositionAlignment.h:115
EdbH2 eHShr2
histogram used for the shrinkage-selection
Definition: EdbPositionAlignment.h:62
void ResetPositionCorr()
Definition: EdbPositionAlignment.h:130
Float_t eDTXmin
Definition: EdbPositionAlignment.h:31
Int_t eNShr2step
number of steps for the Shr-selection
Definition: EdbPositionAlignment.h:59
void AlignWithTracks(int nang=3, int npos=0)
Definition: EdbPositionAlignment.cxx:919
int ReadPosTree(TTree *tree, EdbPattern *p=0, EdbPattern *p1=0, EdbPattern *p2=0, TEventList *lst=0)
Definition: EdbPositionAlignment.cxx:238
Float_t eZ1to
limits in Z for the peak search (ePat1)
Definition: EdbPositionAlignment.h:35
Float_t eDTYmin
min angular difference for the dublets cutout
Definition: EdbPositionAlignment.h:31
void ShrinkageSelection(float dzbase)
Definition: EdbPositionAlignment.cxx:806
void RankCouplesFast(TObjArray &arrtr)
Definition: EdbPositionAlignment.cxx:355
Float_t eZ2to
limits in Z for the peak search (ePat2)
Definition: EdbPositionAlignment.h:36
Float_t eShr2from
Definition: EdbPositionAlignment.h:58
void PrintStat()
Definition: EdbPositionAlignment.cxx:67
int SelectZone(float min[2], float max[2], TObjArray &arr1, TObjArray &arr2, float maxDens)
Definition: EdbPositionAlignment.cxx:483
Float_t eDTYmax
max angular acceptance (ex: 0.15) for the coinsidences
Definition: EdbPositionAlignment.h:27
EdbH2 eHShr1
histogram used for the shrinkage-selection
Definition: EdbPositionAlignment.h:61
void PrintSummary()
Definition: EdbPositionAlignment.cxx:76
Int_t eNpeak
number of found combinations
Definition: EdbPositionAlignment.h:42
Float_t eZ1from
Definition: EdbPositionAlignment.h:35
int DoubletsFilterOutSide(EdbPatCell2 &pc, bool checkview=true)
Definition: EdbPositionAlignment.cxx:771
void FindCorrections(EdbPattern &pat1, EdbPattern &pat2, float DZ, bool doShrink)
Definition: EdbPositionAlignment.cxx:1008
Float_t eWbaseMin
cut for the w of basetrack to accept it
Definition: EdbPositionAlignment.h:53
Float_t eXpeak
Definition: EdbPositionAlignment.h:41
bool ActivatePosTree(const char *name="postree")
Definition: EdbPositionAlignment.cxx:105
int SelectZoneSide(EdbPatCell2 &pc, float min[2], float max[2], TObjArray &arr, int nmax=kMaxInt)
Definition: EdbPositionAlignment.cxx:497
int SelectPeak(EdbPattern &p1, EdbPattern &p2, float dx, float dy, float dz1, float dz2)
Definition: EdbPositionAlignment.cxx:719
int DoubletsFilterOut(bool checkview=true)
Definition: EdbPositionAlignment.cxx:765
Float_t eYpeak
peak position in X,Y
Definition: EdbPositionAlignment.h:41
Float_t eS0tx
Definition: EdbPositionAlignment.h:52
EdbH2 eHDZ
histogram used for Z-selection
Definition: EdbPositionAlignment.h:45
int Link()
Definition: EdbPositionAlignment.cxx:992
int Align()
Definition: EdbPositionAlignment.cxx:695
Float_t eShr1from
Definition: EdbPositionAlignment.h:57
void PositionPlotA(EdbH2 &hd, float DR=0, TObjArray *arr1=0, TObjArray *arr2=0)
Definition: EdbPositionAlignment.cxx:555
void FindDiff20(float &dx, float &dy, float &dtx, float &dty)
Definition: EdbPositionAlignment.cxx:961
float Xcorr(EdbSegP &s, float dz, float dx)
Definition: EdbPositionAlignment.h:116
TObjArray eComb1
Definition: EdbPositionAlignment.h:18
Float_t eDXmin
Definition: EdbPositionAlignment.h:30
Float_t eZ2from
Definition: EdbPositionAlignment.h:36
float eY0
coordinates of the center of the zone (for the ePeakNT only)
Definition: EdbPositionAlignment.h:24
int FillArrays(EdbPattern &p1, EdbPattern &p2)
Definition: EdbPositionAlignment.cxx:416
TString eSmoothKernel
used to smooth histograms
Definition: EdbPositionAlignment.h:47
Float_t eDTXmax
Definition: EdbPositionAlignment.h:27
Float_t eZ1peak
Definition: EdbPositionAlignment.h:40
float eX0
Definition: EdbPositionAlignment.h:24
Float_t eXcell
Definition: EdbPositionAlignment.h:26
EdbPositionAlignment()
Definition: EdbPositionAlignment.cxx:31
float Ycorr(EdbSegP &s, float dz, float dy)
Definition: EdbPositionAlignment.h:117
TObjArray eComb2
array with the selected combinations of segments
Definition: EdbPositionAlignment.h:18
Float_t eShr1to
limits in Shr for the peak search (ePat1)
Definition: EdbPositionAlignment.h:57
Float_t eBinY
bin size for the differential hist (for example 5 microns)
Definition: EdbPositionAlignment.h:28
Float_t eBinX
Definition: EdbPositionAlignment.h:28
void ResetPeak()
Definition: EdbPositionAlignment.h:123
Float_t eChi2Max
cut for the chi2 of the basetrack
Definition: EdbPositionAlignment.h:54
Float_t eS0x
Definition: EdbPositionAlignment.h:52
Float_t eYcell
cell size (for example 50 microns)
Definition: EdbPositionAlignment.h:26
void PositionPlot(float dz1, float dz2, EdbH2 &hd)
Definition: EdbPositionAlignment.cxx:584
Bool_t eDoRot
if true - perform the rotation selection
Definition: EdbPositionAlignment.h:65
int WideSearchXY(EdbPattern &pat1, EdbPattern &pat2, EdbH2 &hxy, float dz, float xmin, float xmax, float ymin, float ymax)
Definition: EdbPositionAlignment.cxx:1048
virtual ~EdbPositionAlignment()
Definition: EdbPositionAlignment.cxx:58
Float_t eS0y
Definition: EdbPositionAlignment.h:52
int FillPosTree(float dz1, float dz2, int flag)
Definition: EdbPositionAlignment.cxx:189
void ResetAngularCorr()
Definition: EdbPositionAlignment.h:131
int ShrinkageSelectionSide(EdbPatCell2 &pc1, EdbPatCell2 &pc2, EdbH2 &hshr, int nstep, float deltaShr)
Definition: EdbPositionAlignment.cxx:825
void Zselection(EdbH2 &hd)
Definition: EdbPositionAlignment.cxx:624
void RankCouples0()
Definition: EdbPositionAlignment.cxx:294
Float_t eS0ty
sigmas at 0 angle for the chi2 calculation
Definition: EdbPositionAlignment.h:52
int WritePosTree()
Definition: EdbPositionAlignment.cxx:134
int SpotsFilterOut(int nmax)
Definition: EdbPositionAlignment.cxx:796
Int_t eNZ2step
number of steps for the z-selection
Definition: EdbPositionAlignment.h:37
EdbAffine2D * eAff
the found affine transformation (when applied to pattern1 gives pattern2 )
Definition: EdbPositionAlignment.h:43
void RankCouples()
Definition: EdbPositionAlignment.cxx:287
Float_t eShr2to
limits in Shr for the peak search (ePat2)
Definition: EdbPositionAlignment.h:58
TObjArray eSegCouples
segment couples objects to fill couples format tree
Definition: EdbPositionAlignment.h:20
float Xcorr(EdbSegP &s, float dz)
Definition: EdbPositionAlignment.h:114
int SelectPeak(EdbPattern &p1, EdbPattern &p2, float dx=10, float dy=10)
Definition: EdbPositionAlignment.h:120
void FindDiff(TObjArray &arr1, TObjArray &arr2, EdbPatCell2 &pc1, EdbPatCell2 &pc2, float &dx, float &dy, float &dtx, float &dty)
Definition: EdbPositionAlignment.cxx:967
EdbPatCell2 ePC2
cells with the pointers to segments
Definition: EdbPositionAlignment.h:17
Float_t eDYmin
min position difference for the dublets cutout
Definition: EdbPositionAlignment.h:30
EdbH2 eHpeak
histogram used for peak selection
Definition: EdbPositionAlignment.h:44
Int_t eNZ1step
Definition: EdbPositionAlignment.h:37
static int SelectBestComptons(TObjArray &a, TObjArray &arr, int nmax)
Definition: EdbPositionAlignment.cxx:505
Float_t eZ2peak
peak position in Z
Definition: EdbPositionAlignment.h:40
EdbPatCell2 ePC1
Definition: EdbPositionAlignment.h:17
int FillCombinations()
Definition: EdbPositionAlignment.cxx:534
TObjArray eTracks
tracks created with segments of eComb1, eComb2
Definition: EdbPositionAlignment.h:19
int SelectNarrowPeakDXDY(float dr, EdbH2 &hxy)
Definition: EdbPositionAlignment.cxx:878
void SaveAsTree(EdbPattern &pat, const char *name)
Definition: EdbPositionAlignment.cxx:270
Definition: EdbSegP.h:21
float DZ
Definition: hwinit.C:66
s
Definition: check_shower.C:55
int max
Definition: check_shower.C:41
const char * name
Definition: merge_Energy_SytematicSources_Electron.C:24
p
Definition: testBGReduction_AllMethods.C:8