FEDRA emulsion software from the OPERA Collaboration
EdbFragmentAlignment.h
Go to the documentation of this file.
1 #ifndef ROOT_EdbFragmentAlignment
2 #define ROOT_EdbFragmentAlignment
3 
5 // //
6 // EdbFragmentAlignment //
7 // //
8 // //
10 #include <TFile.h>
11 #include <TEnv.h>
12 #include "EdbID.h"
13 #include "EdbMosaicIO.h"
14 #include "EdbPattern.h"
15 #include "EdbPlateAlignment.h"
16 #include "EdbLayer.h"
17 #include "EdbViewMap.h"
18 #include "EdbRunAccess.h"
19 #include "EdbCouplesTree.h"
20 
21 struct AlPar
22 {
24  float SigmaR;
25  float SigmaT;
26  float OffsetMax;
27  float DZ;
28  float DPHI;
29  float Doublets[4]; //dx,dy,dtx,dty
30  int DoFine;
32 };
33 
34 //______________________________________________________________________________
35 class EdbFragmentAlignment : public TObject {
36  private:
37 
38  int eN; // number of input headers
39  TObjArray eHarr; // list of headers
40  TObjArray eParr; // list of patterns
43 
44  int eID; // fragment id
45  int eSide; // side
46  int eMinPeak;
47 
48  EdbAffine2D eAff; // recalculeated scaleX scaleY
49 
50  public:
51  AlPar eAP; // alignment parameters
52  float eR0; // max distance for neighbour search
53  bool eDoSaveAlignments; // flag to save individual alignments
54 
55  public:
57  virtual ~EdbFragmentAlignment(){ eParr.Delete(); SafeDelete(eVC); SafeDelete(eVC0); }
58 
59  void SetID(int id) {eID=id;}
60  void SetSide(int s) {eSide=s;}
61  void SetHarr(TObjArray &ha);
62  void SetMinPeak(int mp) {eMinPeak=mp;}
63  void SetAlPar( const AlPar &ap, EdbPlateAlignment &al);
64 
65  int N() const {return eN;}
66  int Side() const {return eSide;}
67  TObjArray &GetParr() { return eParr; }
68  EdbViewHeader *GetHeader(int i) const { return (EdbViewHeader *)(eHarr.At(i)); }
69  EdbPattern *GetPattern(int i) const { return (EdbPattern *)(eParr.At(i)); }
70 
71  void ApplyAff();
72  int ViewSideAl( EdbPattern &p1, EdbPattern &p2, EdbAffine2D &aff, bool do_shift );
73  void AddPatternAt( EdbPattern *p, int i );
74  void SetPatternsOwner() { eParr.SetOwner(); }
75  float CheckScaleX(float y0);
76  float CheckScaleY(float x0);
77  void CheckScale( EdbMosaicPath &mp, EdbAffine2D &aff );
78  void AlignFragment( EdbPattern &pf );
79  void AlignFragment_dummy( EdbPattern &pf );
80  void AlignAndShift( EdbMosaicPath &mp );
81  void RealignAndShift( EdbMosaicPath &mp );
82  void FillVC();
83  void FillVDT(EdbCouplesTree &vdt);
84 
85  ClassDef(EdbFragmentAlignment,1) //Mosaic alignment
86 };
87 
88 #endif /* ROOT_EdbMosaic */
Definition: EdbAffine.h:17
Definition: EdbCouplesTree.h:17
Definition: EdbFragmentAlignment.h:35
void SetSide(int s)
Definition: EdbFragmentAlignment.h:60
TObjArray & GetParr()
Definition: EdbFragmentAlignment.h:67
EdbAffine2D eAff
Definition: EdbFragmentAlignment.h:48
TObjArray eParr
Definition: EdbFragmentAlignment.h:40
void AlignAndShift(EdbMosaicPath &mp)
Definition: EdbFragmentAlignment.cxx:184
void AlignFragment_dummy(EdbPattern &pf)
Definition: EdbFragmentAlignment.cxx:86
int ViewSideAl(EdbPattern &p1, EdbPattern &p2, EdbAffine2D &aff, bool do_shift)
Definition: EdbFragmentAlignment.cxx:259
void FillVDT(EdbCouplesTree &vdt)
Definition: EdbFragmentAlignment.cxx:120
void SetMinPeak(int mp)
Definition: EdbFragmentAlignment.h:62
void SetHarr(TObjArray &ha)
Definition: EdbFragmentAlignment.cxx:21
bool eDoSaveAlignments
Definition: EdbFragmentAlignment.h:53
EdbViewHeader * GetHeader(int i) const
Definition: EdbFragmentAlignment.h:68
int eID
centers after alignment
Definition: EdbFragmentAlignment.h:44
float CheckScaleY(float x0)
Definition: EdbFragmentAlignment.cxx:141
EdbFragmentAlignment()
Definition: EdbFragmentAlignment.h:56
float eR0
Definition: EdbFragmentAlignment.h:52
int N() const
Definition: EdbFragmentAlignment.h:65
float CheckScaleX(float y0)
Definition: EdbFragmentAlignment.cxx:130
void AlignFragment(EdbPattern &pf)
Definition: EdbFragmentAlignment.cxx:52
TObjArray eHarr
Definition: EdbFragmentAlignment.h:39
void SetID(int id)
Definition: EdbFragmentAlignment.h:59
void RealignAndShift(EdbMosaicPath &mp)
Definition: EdbFragmentAlignment.cxx:221
void CheckScale(EdbMosaicPath &mp, EdbAffine2D &aff)
Definition: EdbFragmentAlignment.cxx:152
int eMinPeak
Definition: EdbFragmentAlignment.h:46
virtual ~EdbFragmentAlignment()
Definition: EdbFragmentAlignment.h:57
int eN
Definition: EdbFragmentAlignment.h:38
int Side() const
Definition: EdbFragmentAlignment.h:66
void AddPatternAt(EdbPattern *p, int i)
Definition: EdbFragmentAlignment.cxx:278
void SetAlPar(const AlPar &ap, EdbPlateAlignment &al)
Definition: EdbFragmentAlignment.cxx:8
int eSide
Definition: EdbFragmentAlignment.h:45
void FillVC()
Definition: EdbFragmentAlignment.cxx:33
void SetPatternsOwner()
Definition: EdbFragmentAlignment.h:74
AlPar eAP
Definition: EdbFragmentAlignment.h:51
EdbPattern * eVC
original centers
Definition: EdbFragmentAlignment.h:42
void ApplyAff()
Definition: EdbFragmentAlignment.cxx:177
EdbPattern * GetPattern(int i) const
Definition: EdbFragmentAlignment.h:69
EdbPattern * eVC0
Definition: EdbFragmentAlignment.h:41
Definition: EdbMosaicPath.h:20
Definition: EdbPattern.h:280
Definition: EdbPlateAlignment.h:8
Definition: EdbView.h:26
UInt_t id
Definition: tlg2pattern.C:118
Definition: EdbFragmentAlignment.h:22
float Doublets[4]
Definition: EdbFragmentAlignment.h:29
float DZ
Definition: EdbFragmentAlignment.h:27
float OffsetMax
Definition: EdbFragmentAlignment.h:26
float DPHI
Definition: EdbFragmentAlignment.h:28
int NoScaleRot
Definition: EdbFragmentAlignment.h:23
int DoSaveCouples
Definition: EdbFragmentAlignment.h:31
float SigmaR
Definition: EdbFragmentAlignment.h:24
int DoFine
Definition: EdbFragmentAlignment.h:30
float SigmaT
Definition: EdbFragmentAlignment.h:25
p
Definition: testBGReduction_AllMethods.C:8
EdbSegP * s
Definition: tlg2pattern.C:32