FEDRA emulsion software from the OPERA Collaboration
EdbSegCorr.h
Go to the documentation of this file.
1 #ifndef ROOT_EdbSegCorr
2 #define ROOT_EdbSegCorr
3 
4 #include "TArrayF.h"
5 #include "EdbSegP.h"
6 
7 class EdbSegCorr : public TObject
8 {
9  private:
10  TArrayF eV; // variables: dx,dy,dz, dtx,dty, shr, phy
11  // 0 1 2 3 4 5 6
12  public:
13  Bool_t eApplyCorr; // do correction
14 
15  public:
17  virtual ~EdbSegCorr(){}
18 
19  void ResetCorr() { eV.Set(10); eV[5]=1.; }
20 
21  void SetV(int i, float x) {eV[i]=x;}
22  void AddV(int i, float x) {eV[i]+=x;}
23  float V(int i) { return eV[i]; }
24 
25  float X(EdbSegP &s) { if(!eApplyCorr) return s.eX; if(TMath::Abs(eV[6])<0.00001) return Xpos(s); else return Xrot(s); }
26  float Y(EdbSegP &s) { if(!eApplyCorr) return s.eY; if(TMath::Abs(eV[6])<0.00001) return Ypos(s); else return Yrot(s); }
27 
28  float Xpos(EdbSegP &s) { return eApplyCorr? eV[0] + s.eX + TX(s)*eV[2] : s.eX; }
29  float Ypos(EdbSegP &s) { return eApplyCorr? eV[1] + s.eY + TY(s)*eV[2] : s.eY; }
30 
31  float Xrot(EdbSegP &s) { return Xpos(s)*TMath::Cos(eV[6])-Ypos(s)*TMath::Sin(eV[6]); }
32  float Yrot(EdbSegP &s) { return Xpos(s)*TMath::Sin(eV[6])+Ypos(s)*TMath::Cos(eV[6]); }
33 
34  float TX(EdbSegP &s) { return eApplyCorr? s.eTX/eV[5]+eV[3] : s.eTX; }
35  float TY(EdbSegP &s) { return eApplyCorr? s.eTY/eV[5]+eV[4] : s.eTY; }
36  float T(EdbSegP &s) { return TMath::Sqrt( TX(s)*TX(s) + TY(s)*TY(s) ); }
37 
38  void ApplyCorrections( EdbSegP &s );
39 
40  void Print();
41 
42  ClassDef(EdbSegCorr,1) // segment corrections as separated variables
43 };
44 
45 #endif /* EdbSegCorr */
Definition: EdbSegCorr.h:8
EdbSegCorr()
Definition: EdbSegCorr.h:16
float T(EdbSegP &s)
Definition: EdbSegCorr.h:36
virtual ~EdbSegCorr()
Definition: EdbSegCorr.h:17
float TX(EdbSegP &s)
Definition: EdbSegCorr.h:34
float X(EdbSegP &s)
Definition: EdbSegCorr.h:25
float Xpos(EdbSegP &s)
Definition: EdbSegCorr.h:28
Bool_t eApplyCorr
Definition: EdbSegCorr.h:13
void Print()
float V(int i)
Definition: EdbSegCorr.h:23
float Y(EdbSegP &s)
Definition: EdbSegCorr.h:26
float Ypos(EdbSegP &s)
Definition: EdbSegCorr.h:29
void SetV(int i, float x)
Definition: EdbSegCorr.h:21
TArrayF eV
Definition: EdbSegCorr.h:10
float TY(EdbSegP &s)
Definition: EdbSegCorr.h:35
float Xrot(EdbSegP &s)
Definition: EdbSegCorr.h:31
void AddV(int i, float x)
Definition: EdbSegCorr.h:22
float Yrot(EdbSegP &s)
Definition: EdbSegCorr.h:32
void ApplyCorrections(EdbSegP &s)
Definition: EdbSegCorr.cxx:13
void ResetCorr()
Definition: EdbSegCorr.h:19
Definition: EdbSegP.h:18
Float_t eX
Definition: EdbSegP.h:28
Float_t eTX
Definition: EdbSegP.h:29
Float_t eTY
Definition: EdbSegP.h:29
Float_t eY
Definition: EdbSegP.h:28
EdbSegP * s
Definition: tlg2pattern.C:32