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 
12 //-------------------------------------------------------------------------------------------------
13 class EdbPositionAlignment : public TObject
14 {
15 public:
16  // service objects:
17  EdbPatCell2 ePC1, ePC2; // cells with the pointers to segments
18  TObjArray eComb1, eComb2; // array with the selected combinations of segments
19  TObjArray eTracks; // tracks created with segments of eComb1, eComb2
20  TObjArray eSegCouples; // segment couples objects to fill couples format tree
21  EdbPatCell2 ePC; // cells with the pointers to tracks
22 
23  // input parameters:
24  float eX0, eY0; // coordinates of the center of the zone (for the ePeakNT only)
25 
26  Float_t eXcell, eYcell; // cell size (for example 50 microns)
27  Float_t eDTXmax,eDTYmax; // max angular acceptance (ex: 0.15) for the coinsidences
28  Float_t eBinX, eBinY; // bin size for the differential hist (for example 5 microns)
29 
30  Float_t eDXmin, eDYmin; // min position difference for the dublets cutout
31  Float_t eDTXmin, eDTYmin; // min angular difference for the dublets cutout
32  Float_t eRpeak; // coordinate peak acceptance
33 
34  // z-selection block:
35  Float_t eZ1from,eZ1to; // limits in Z for the peak search (ePat1)
36  Float_t eZ2from,eZ2to; // limits in Z for the peak search (ePat2)
37  Int_t eNZ1step, eNZ2step; // number of steps for the z-selection
38 
39  // results of the z-selection:
40  Float_t eZ1peak, eZ2peak; // peak position in Z
41  Float_t eXpeak,eYpeak; // peak position in X,Y
42  Int_t eNpeak; // number of found combinations
43  EdbAffine2D *eAff; // the found affine transformation (when applied to pattern1 gives pattern2 )
44  EdbH2 eHpeak; // histogram used for peak selection
45  EdbH2 eHDZ; // histogram used for Z-selection
46 
47  TString eSmoothKernel; // used to smooth histograms
48 
49  TTree *ePosTree; // optional: tree with s1:s2 for the selected combinations
50 
51  // linking:
52  Float_t eS0x,eS0y,eS0tx,eS0ty; // sigmas at 0 angle for the chi2 calculation
53  Float_t eWbaseMin; // cut for the w of basetrack to accept it
54  Float_t eChi2Max; // cut for the chi2 of the basetrack
55 
56  // shrinkage-selection block:
57  Float_t eShr1from,eShr1to; // limits in Shr for the peak search (ePat1)
58  Float_t eShr2from,eShr2to; // limits in Shr for the peak search (ePat2)
59  Int_t eNShr1step, eNShr2step; // number of steps for the Shr-selection
60  // results of the shrinkage selection:
61  EdbH2 eHShr1; // histogram used for the shrinkage-selection
62  EdbH2 eHShr2; // histogram used for the shrinkage-selection
63 
64 
65  Bool_t eDoRot; // if true - perform the rotation selection
66  EdbH1 eRot; // definition of the rotation steps
67 
68 public:
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
int max
Definition: check_shower.C:41
Definition: EdbAffine.h:17
Definition: EdbCell1.h:17
Definition: EdbCell2.h:19
Definition: EdbPatCell2.h:10
float eDX
Definition: EdbPatCell2.h:18
float eDTX
Definition: EdbPatCell2.h:20
float eDY
Definition: EdbPatCell2.h:18
float eDTY
Definition: EdbPatCell2.h:20
Definition: EdbPattern.h:280
Definition: EdbPositionAlignment.h:14
void FindDiff10(float &dx, float &dy, float &dtx, float &dty)
Definition: EdbPositionAlignment.cxx:954
EdbH1 eRot
Definition: EdbPositionAlignment.h:66
Float_t eRpeak
Definition: EdbPositionAlignment.h:32
TTree * ePosTree
Definition: EdbPositionAlignment.h:49
EdbPatCell2 ePC
Definition: EdbPositionAlignment.h:21
void FindDiff12(float &dx, float &dy, float &dtx, float &dty)
Definition: EdbPositionAlignment.cxx:948
Int_t eNShr1step
Definition: EdbPositionAlignment.h:59
float Ycorr(EdbSegP &s, float dz)
Definition: EdbPositionAlignment.h:115
EdbH2 eHShr2
Definition: EdbPositionAlignment.h:62
void ResetPositionCorr()
Definition: EdbPositionAlignment.h:130
Float_t eDTXmin
Definition: EdbPositionAlignment.h:31
Int_t eNShr2step
Definition: EdbPositionAlignment.h:59
void AlignWithTracks(int nang=3, int npos=0)
Definition: EdbPositionAlignment.cxx:918
int ReadPosTree(TTree *tree, EdbPattern *p=0, EdbPattern *p1=0, EdbPattern *p2=0, TEventList *lst=0)
Definition: EdbPositionAlignment.cxx:237
Float_t eZ1to
Definition: EdbPositionAlignment.h:35
Float_t eDTYmin
Definition: EdbPositionAlignment.h:31
void ShrinkageSelection(float dzbase)
Definition: EdbPositionAlignment.cxx:805
void RankCouplesFast(TObjArray &arrtr)
Definition: EdbPositionAlignment.cxx:354
Float_t eZ2to
Definition: EdbPositionAlignment.h:36
Float_t eShr2from
Definition: EdbPositionAlignment.h:58
void PrintStat()
Definition: EdbPositionAlignment.cxx:66
int SelectZone(float min[2], float max[2], TObjArray &arr1, TObjArray &arr2, float maxDens)
Definition: EdbPositionAlignment.cxx:482
Float_t eDTYmax
Definition: EdbPositionAlignment.h:27
EdbH2 eHShr1
Definition: EdbPositionAlignment.h:61
void PrintSummary()
Definition: EdbPositionAlignment.cxx:75
Int_t eNpeak
Definition: EdbPositionAlignment.h:42
Float_t eZ1from
Definition: EdbPositionAlignment.h:35
int DoubletsFilterOutSide(EdbPatCell2 &pc, bool checkview=true)
Definition: EdbPositionAlignment.cxx:770
void FindCorrections(EdbPattern &pat1, EdbPattern &pat2, float DZ, bool doShrink)
Definition: EdbPositionAlignment.cxx:1007
Float_t eWbaseMin
Definition: EdbPositionAlignment.h:53
Float_t eXpeak
Definition: EdbPositionAlignment.h:41
bool ActivatePosTree(const char *name="postree")
Definition: EdbPositionAlignment.cxx:104
int SelectZoneSide(EdbPatCell2 &pc, float min[2], float max[2], TObjArray &arr, int nmax=kMaxInt)
Definition: EdbPositionAlignment.cxx:496
int SelectPeak(EdbPattern &p1, EdbPattern &p2, float dx, float dy, float dz1, float dz2)
Definition: EdbPositionAlignment.cxx:718
int DoubletsFilterOut(bool checkview=true)
Definition: EdbPositionAlignment.cxx:764
Float_t eYpeak
Definition: EdbPositionAlignment.h:41
Float_t eS0tx
Definition: EdbPositionAlignment.h:52
EdbH2 eHDZ
Definition: EdbPositionAlignment.h:45
int Link()
Definition: EdbPositionAlignment.cxx:991
int Align()
Definition: EdbPositionAlignment.cxx:694
Float_t eShr1from
Definition: EdbPositionAlignment.h:57
void PositionPlotA(EdbH2 &hd, float DR=0, TObjArray *arr1=0, TObjArray *arr2=0)
Definition: EdbPositionAlignment.cxx:554
void FindDiff20(float &dx, float &dy, float &dtx, float &dty)
Definition: EdbPositionAlignment.cxx:960
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
Definition: EdbPositionAlignment.h:24
int FillArrays(EdbPattern &p1, EdbPattern &p2)
Definition: EdbPositionAlignment.cxx:415
TString eSmoothKernel
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:30
float Ycorr(EdbSegP &s, float dz, float dy)
Definition: EdbPositionAlignment.h:117
TObjArray eComb2
Definition: EdbPositionAlignment.h:18
Float_t eShr1to
Definition: EdbPositionAlignment.h:57
Float_t eBinY
Definition: EdbPositionAlignment.h:28
Float_t eBinX
Definition: EdbPositionAlignment.h:28
void ResetPeak()
Definition: EdbPositionAlignment.h:123
Float_t eChi2Max
Definition: EdbPositionAlignment.h:54
Float_t eS0x
Definition: EdbPositionAlignment.h:52
Float_t eYcell
Definition: EdbPositionAlignment.h:26
void PositionPlot(float dz1, float dz2, EdbH2 &hd)
Definition: EdbPositionAlignment.cxx:583
Bool_t eDoRot
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:1047
virtual ~EdbPositionAlignment()
Definition: EdbPositionAlignment.cxx:57
Float_t eS0y
Definition: EdbPositionAlignment.h:52
int FillPosTree(float dz1, float dz2, int flag)
Definition: EdbPositionAlignment.cxx:188
void ResetAngularCorr()
Definition: EdbPositionAlignment.h:131
int ShrinkageSelectionSide(EdbPatCell2 &pc1, EdbPatCell2 &pc2, EdbH2 &hshr, int nstep, float deltaShr)
Definition: EdbPositionAlignment.cxx:824
void Zselection(EdbH2 &hd)
Definition: EdbPositionAlignment.cxx:623
void RankCouples0()
Definition: EdbPositionAlignment.cxx:293
Float_t eS0ty
Definition: EdbPositionAlignment.h:52
int WritePosTree()
Definition: EdbPositionAlignment.cxx:133
int SpotsFilterOut(int nmax)
Definition: EdbPositionAlignment.cxx:795
Int_t eNZ2step
Definition: EdbPositionAlignment.h:37
EdbAffine2D * eAff
Definition: EdbPositionAlignment.h:43
void RankCouples()
Definition: EdbPositionAlignment.cxx:286
Float_t eShr2to
Definition: EdbPositionAlignment.h:58
TObjArray eSegCouples
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:966
EdbPatCell2 ePC2
Definition: EdbPositionAlignment.h:17
Float_t eDYmin
Definition: EdbPositionAlignment.h:30
EdbH2 eHpeak
Definition: EdbPositionAlignment.h:44
Int_t eNZ1step
Definition: EdbPositionAlignment.h:37
static int SelectBestComptons(TObjArray &a, TObjArray &arr, int nmax)
Definition: EdbPositionAlignment.cxx:504
Float_t eZ2peak
Definition: EdbPositionAlignment.h:40
EdbPatCell2 ePC1
Definition: EdbPositionAlignment.h:17
int FillCombinations()
Definition: EdbPositionAlignment.cxx:533
TObjArray eTracks
Definition: EdbPositionAlignment.h:19
int SelectNarrowPeakDXDY(float dr, EdbH2 &hxy)
Definition: EdbPositionAlignment.cxx:877
void SaveAsTree(EdbPattern &pat, const char *name)
Definition: EdbPositionAlignment.cxx:269
Definition: EdbSegP.h:18
Float_t TX() const
Definition: EdbSegP.h:172
Float_t X() const
Definition: EdbSegP.h:170
Float_t Y() const
Definition: EdbSegP.h:171
Float_t TY() const
Definition: EdbSegP.h:173
float xmin
Definition: emthickness.cpp:61
float ymin
Definition: emthickness.cpp:63
float xmax
Definition: emthickness.cpp:61
float ymax
Definition: emthickness.cpp:63
float DZ
Definition: hwinit.C:66
const char * name
Definition: merge_Energy_SytematicSources_Electron.C:24
p
Definition: testBGReduction_AllMethods.C:8
EdbSegP * s
Definition: tlg2pattern.C:32