#ifndef STNTUPLE_TStnBeamPos_hh #define STNTUPLE_TStnBeamPos_hh #include using namespace std; #include "TObject.h" #include "TString.h" namespace BeamConst { // Dirty trick but better than hardcoding the numbers // --> see Stntuple/alg/TStnBeamAlgs.hh const double corrAtZeroX = 1.26E-7*(38.6+14.2*14.2/38.6); const double corrAtZeroY = 1.24E-7*(38.0+(-9.2)*(-9.2)/38.0); } class TStnBeamPos: public TObject { //----------------------------------------------------------------------------- // data members //----------------------------------------------------------------------------- protected: Int_t fRunNumber; // run number Int_t fStatus; // status of the calibration Int_t fHistory; // history code of beamline Double_t fX0; // beam axis position in X at Z=0 Double_t fY0; // beam axis position in Y at Z=0 Double_t fZ0; // center of the Z-distribution Double_t fDxDz; // beam slope in X ( << 1 ) Double_t fDyDz; // beam slope in Y ( << 1 ) Double_t fCov00; // x,y,x',y' covariance matrix Double_t fCov01; // x,y,x',y' covariance matrix Double_t fCov02; // x,y,x',y' covariance matrix Double_t fCov03; // x,y,x',y' covariance matrix Double_t fCov11; // x,y,x',y' covariance matrix Double_t fCov12; // x,y,x',y' covariance matrix Double_t fCov13; // x,y,x',y' covariance matrix Double_t fCov22; // x,y,x',y' covariance matrix Double_t fCov23; // x,y,x',y' covariance matrix Double_t fCov33; // x,y,x',y' covariance matrix Double_t fEmittXFit; // Emittance X Double_t fEmittYFit; // Emittance X Double_t fBstarXFit; // B* X Double_t fBstarYFit; // B* X Double_t fZzeroXFit; // z0 X Double_t fZzeroYFit; // z0 X Double_t fWidthX; // width in X Double_t fWidthY; // width in Y Double_t fWidthXY; // correlation coefficient Double_t fD0; // ! Double_t fPhi0; // ! TString fName; // name : COT vs SVX // They are kept for compatibility only Double_t fSigmaX; // covariance matrix in x at z=0 Double_t fSigmaY; // covariance matrix in y at z=0 Double_t fSigmaZ; // covariance matrix in z at z=0 //----------------------------------------------------------------------------- // methods //----------------------------------------------------------------------------- public: // ****** constructors and destructor TStnBeamPos(const char* Name = "TStnBeamPos"); TStnBeamPos(const char* Name, Int_t RunNumber, Int_t Status, Int_t History, Double_t X0, Double_t Y0, Double_t Z0, Double_t DxDz, Double_t DyDz, Double_t Cov00, Double_t Cov01, Double_t Cov02, Double_t Cov03, Double_t Cov11, Double_t Cov12, Double_t Cov13, Double_t Cov22, Double_t Cov23, Double_t Cov33, Double_t EmittXFit, Double_t EmittYFit, Double_t BstarXFit, Double_t BstarYFit, Double_t ZzeroXFit, Double_t ZzeroYFit, Double_t WidthX, Double_t WidthY, Double_t WidthXY); // ****** init functions Int_t Init (Int_t RunNumber, Int_t Status, Int_t History, Double_t X0, Double_t Y0, Double_t Z0, Double_t DxDz, Double_t DyDz, Double_t Cov00, Double_t Cov01, Double_t Cov02, Double_t Cov03, Double_t Cov11, Double_t Cov12, Double_t Cov13, Double_t Cov22, Double_t Cov23, Double_t Cov33, Double_t EmittXFit, Double_t EmittYFit, Double_t BstarXFit, Double_t BstarYFit, Double_t ZzeroXFit, Double_t ZzeroYFit, Double_t WidthX, Double_t WidthY, Double_t WidthXY); void CopyC(TStnBeamPos *b); virtual ~TStnBeamPos() {} // ****** accessors Int_t RunNumber() { return fRunNumber; } Int_t Status () { return fStatus; } Int_t History () { return fHistory; } Double_t X0 () { return fX0; } Double_t Y0 () { return fY0; } Double_t Z0 () { return fZ0; } Double_t DxDz () { return fDxDz; } Double_t DyDz () { return fDyDz; } Double_t Cov00 () { return fCov00 ; } Double_t Cov01 () { return fCov01 ; } Double_t Cov02 () { return fCov02 ; } Double_t Cov03 () { return fCov03 ; } Double_t Cov11 () { return fCov11 ; } Double_t Cov12 () { return fCov12 ; } Double_t Cov13 () { return fCov13 ; } Double_t Cov22 () { return fCov22 ; } Double_t Cov23 () { return fCov23 ; } Double_t Cov33 () { return fCov33 ; } Double_t EmittXFit() { return fEmittXFit; } Double_t EmittYFit() { return fEmittYFit; } Double_t BstarXFit() { return fBstarXFit; } Double_t BstarYFit() { return fBstarYFit; } Double_t ZzeroXFit() { return fZzeroXFit; } Double_t ZzeroYFit() { return fZzeroYFit; } Double_t WidthX () { return fWidthX ; } Double_t WidthY () { return fWidthY ; } Double_t WidthXY () { return fWidthXY ; } // Calculated on the fly Double_t D0 () { return fD0; } Double_t Phi0 () { return fPhi0; } // Obsolete but kept for backward compatibility Double_t SigmaX () { return fSigmaX; } Double_t SigmaY () { return fSigmaY; } Double_t SigmaZ () { return fSigmaZ; } //----------------------------------------------------------------------------- // setters //----------------------------------------------------------------------------- void SetRunNumber(Int_t RunNumber) { fRunNumber = RunNumber; } //----------------------------------------------------------------------------- // overloaded methods of TObject //----------------------------------------------------------------------------- const char* GetName () const { return fName.Data(); } void Print(Option_t* opt = "") const ; // ****** schema evolution void ReadV3(TBuffer& R__b, UInt_t R__s, UInt_t R__c); void ReadV2(TBuffer& R__b, UInt_t R__s, UInt_t R__c); void ReadV1(TBuffer& R__b, UInt_t R__s, UInt_t R__c); ClassDef(TStnBeamPos,4) }; #endif