X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FAliMUONAlignment.h;h=38a6a4f9c55cd3aa10cee1037211ee45e9be5822;hb=c77b3dc7e4eb7e6c571828c984874471eb4e3157;hp=f95e09c58411692b764f2710a8a748f91976b4ca;hpb=058c815d9e5ace44c66dcc31fcf717e7df0b9dcd;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONAlignment.h b/MUON/AliMUONAlignment.h index f95e09c5841..38a6a4f9c55 100644 --- a/MUON/AliMUONAlignment.h +++ b/MUON/AliMUONAlignment.h @@ -12,6 +12,7 @@ // Authors: Bruce Becker, Javier Castillo #include +#include class TGeoCombiTrans; class TClonesArray; @@ -19,7 +20,7 @@ class AliMillepede; class AliMUONGeometryTransformer; class AliMUONTrack; class AliMUONTrackParam; -class AliMUONHitForRec; +class AliMUONVCluster; class AliMUONAlignment:public TObject { @@ -38,18 +39,31 @@ public: void SetBFieldOn(Bool_t bBFieldOn) { fBFieldOn = bBFieldOn; } + /// Define chambers to align + void SetChOnOff(Bool_t *bChOnOff) { + for(int iCh=0; iCh<10; iCh++) + fChOnOff[iCh] = bChOnOff[iCh]; + } + /// Possibility to align only one side of the detector + void SetSpecLROnOff(Bool_t *bSpecLROnOff) { + fSpecLROnOff[0] = bSpecLROnOff[0]; + fSpecLROnOff[1] = bSpecLROnOff[1]; + } void FixStation(Int_t iSt); - void FixHalfSpectrometer(Bool_t *bStOnOff, Bool_t *bSpecLROnOff); - void AllowVariations(Bool_t *bStOnOff); - void SetNonLinear(Bool_t *bStOnOff, Bool_t *bVarXYT); - void AddConstraints(Bool_t *bStOnOff, Bool_t *bVarXYT); - void AddConstraints(Bool_t *bStOnOff, Bool_t *bVarXYT, Bool_t *bDetTLBR, Bool_t *bSpecLROnOff); + void FixChamber(Int_t iCh); + void FixDetElem(Int_t iDetElemId, TString sVarXYT = "XYTZ"); + void FixHalfSpectrometer(const Bool_t *bChOnOff, const Bool_t *bSpecLROnOff); + void AllowVariations(const Bool_t *bChOnOff); + void SetNonLinear(const Bool_t *bChOnOff, const Bool_t *bVarXYT); + void AddConstraints(const Bool_t *bChOnOff, const Bool_t *bVarXYT); + void AddConstraints(const Bool_t *bChOnOff, const Bool_t *bVarXYT, const Bool_t *bDetTLBR, const Bool_t *bSpecLROnOff); void ResetConstraints(); void FixParameter(Int_t param, Double_t value); void SetNonLinear(Int_t param); void AddConstraint(Double_t *factor, Double_t value ); void InitGlobalParameters(Double_t *par); + void SetSigmaXY(Double_t sigmaX, Double_t sigmaY); /// Set array of local derivatives void SetLocalDerivative(Int_t index, Double_t value) { fLocalDerivatives[index] = value; @@ -64,7 +78,9 @@ public: Double_t GetParError(Int_t iPar); AliMUONGeometryTransformer* - ReAlign(const AliMUONGeometryTransformer * transformer, double *misAlignments, Bool_t verbose); + ReAlign(const AliMUONGeometryTransformer * transformer, const double *misAlignments, Bool_t verbose); + + void SetAlignmentResolution(const TClonesArray* misAlignArray, Int_t chId, Double_t chResX, Double_t chResY, Double_t deResX, Double_t deResY); private: /// Not implemented @@ -73,10 +89,10 @@ public: AliMUONAlignment& operator = (const AliMUONAlignment& right); void Init(Int_t nGlobal, Int_t nLocal, Int_t nStdDev); - void ConstrainT(Int_t lDetElem, Int_t lCh, Double_t *lConstraintT, Int_t iVar, Double_t lWeight=1.0); - void ConstrainL(Int_t lDetElem, Int_t lCh, Double_t *lConstraintL, Int_t iVar, Double_t lWeight=1.0); - void ConstrainB(Int_t lDetElem, Int_t lCh, Double_t *lConstraintB, Int_t iVar, Double_t lWeight=1.0); - void ConstrainR(Int_t lDetElem, Int_t lCh, Double_t *lConstraintR, Int_t iVar, Double_t lWeight=1.0); + void ConstrainT(Int_t lDetElem, Int_t lCh, Double_t *lConstraintT, Int_t iVar, Double_t lWeight=1.0) const; + void ConstrainL(Int_t lDetElem, Int_t lCh, Double_t *lConstraintL, Int_t iVar, Double_t lWeight=1.0) const; + void ConstrainB(Int_t lDetElem, Int_t lCh, Double_t *lConstraintB, Int_t iVar, Double_t lWeight=1.0) const; + void ConstrainR(Int_t lDetElem, Int_t lCh, Double_t *lConstraintR, Int_t iVar, Double_t lWeight=1.0) const; void FillDetElemData(); void FillRecPointData(); void FillTrackParamData(); @@ -84,12 +100,13 @@ public: void LocalEquationX(); void LocalEquationY(); - TGeoCombiTrans ReAlign(const TGeoCombiTrans& transform, double *detElemMisAlignment) const; + TGeoCombiTrans ReAlign(const TGeoCombiTrans& transform, const double *detElemMisAlignment) const; Bool_t fBFieldOn; ///< Flag for Magnetic filed On/Off - - Bool_t fDoF[3]; ///< Flags degrees of freedom to align (x,y,phi) - Double_t fAllowVar[3]; ///< "Encouraged" variation for degrees of freedom + Bool_t fChOnOff[10]; ///< Flags for chamber On/Off + Bool_t fSpecLROnOff[2]; ///< Flags for left right On/Off + Bool_t fDoF[4]; ///< Flags degrees of freedom to align (x,y,phi) + Double_t fAllowVar[4]; ///< "Encouraged" variation for degrees of freedom Double_t fStartFac; ///< Initial value for chi2 cut ///< if > 1 Iterations in AliMillepede are turned on Double_t fResCutInitial; ///< Cut on residual for first iteration @@ -97,11 +114,10 @@ public: AliMillepede *fMillepede; ///< Detector independent alignment class - TClonesArray *fTrackParamAtHit; ///< Array of track parameters - TClonesArray *fHitForRecAtHit; ///< Array of track hits - AliMUONTrack *fTrack; ///< AliMUONTrack - AliMUONHitForRec *fRecHit; ///< AliMUONHitForRec - AliMUONTrackParam *fTrackParam; ///< Track parameters + TClonesArray *fTrackParamAtCluster; ///< Array of track parameters + AliMUONTrack *fTrack; ///< AliMUONTrack + AliMUONVCluster *fCluster; ///< AliMUONVCluster + AliMUONTrackParam *fTrackParam; ///< Track parameters Int_t fNGlobal; ///< Number of global parameters Int_t fNLocal; ///< Number of local parameters @@ -116,55 +132,55 @@ public: Double_t fMeas[2]; ///< Current measurement (depend on B field On/Off) Double_t fSigma[2]; ///< Estimated resolution on measurement - Double_t fGlobalDerivatives[468]; ///< Array of global derivatives + Double_t fGlobalDerivatives[624]; ///< Array of global derivatives Double_t fLocalDerivatives[4]; ///< Array of local derivatives - Double_t fConstraintX[468]; ///< Array for constraint equation all X - Double_t fConstraintY[468]; ///< Array for constraint equation all Y - Double_t fConstraintP[468]; ///< Array for constraint equation all P - Double_t fConstraintXT[468]; ///< Array for constraint equation X Top half - Double_t fConstraintYT[468]; ///< Array for constraint equation Y Top half - Double_t fConstraintPT[468]; ///< Array for constraint equation P Top half - Double_t fConstraintXZT[468]; ///< Array for constraint equation X vs Z Top half - Double_t fConstraintYZT[468]; ///< Array for constraint equation Y vs Z Top half - Double_t fConstraintPZT[468]; ///< Array for constraint equation P vs Z Top half - Double_t fConstraintXYT[468]; ///< Array for constraint equation X vs Y Top half - Double_t fConstraintYYT[468]; ///< Array for constraint equation Y vs Y Top half - Double_t fConstraintPYT[468]; ///< Array for constraint equation P vs Y Top half - Double_t fConstraintXB[468]; ///< Array for constraint equation X Bottom half - Double_t fConstraintYB[468]; ///< Array for constraint equation Y Bottom half - Double_t fConstraintPB[468]; ///< Array for constraint equation P Bottom half - Double_t fConstraintXZB[468]; ///< Array for constraint equation X vs Z Bottom half - Double_t fConstraintYZB[468]; ///< Array for constraint equation Y vs Z Bottom half - Double_t fConstraintPZB[468]; ///< Array for constraint equation P vs Z Bottom half - Double_t fConstraintXYB[468]; ///< Array for constraint equation X vs Y Bottom half - Double_t fConstraintYYB[468]; ///< Array for constraint equation Y vs Y Bottom half - Double_t fConstraintPYB[468]; ///< Array for constraint equation P vs Y Bottom half - Double_t fConstraintXR[468]; ///< Array for constraint equation X Right half - Double_t fConstraintYR[468]; ///< Array for constraint equation Y Right half - Double_t fConstraintPR[468]; ///< Array for constraint equation P Right half - Double_t fConstraintXZR[468]; ///< Array for constraint equation X vs Z Right half - Double_t fConstraintYZR[468]; ///< Array for constraint equation Y vs Z Right half - Double_t fConstraintPZR[468]; ///< Array for constraint equation P vs Z Right half - Double_t fConstraintXYR[468]; ///< Array for constraint equation X vs Y Right half - Double_t fConstraintYYR[468]; ///< Array for constraint equation Y vs Y Right half - Double_t fConstraintPYR[468]; ///< Array for constraint equation P vs Y Right half - Double_t fConstraintXL[468]; ///< Array for constraint equation X Left half - Double_t fConstraintYL[468]; ///< Array for constraint equation Y Left half - Double_t fConstraintPL[468]; ///< Array for constraint equation P Left half - Double_t fConstraintXZL[468]; ///< Array for constraint equation X vs Z Left half - Double_t fConstraintYZL[468]; ///< Array for constraint equation Y vs Z Left half - Double_t fConstraintPZL[468]; ///< Array for constraint equation P vs Z Left half - Double_t fConstraintXYL[468]; ///< Array for constraint equation X vs Y Left half - Double_t fConstraintYYL[468]; ///< Array for constraint equation Y vs Y Left half - Double_t fConstraintPYL[468]; ///< Array for constraint equation P vs Y Left half - Double_t fConstraintX3[468]; ///< Array for constraint equation St3 X - Double_t fConstraintY3[468]; ///< Array for constraint equation St3 Y - Double_t fConstraintX4[468]; ///< Array for constraint equation St4 X - Double_t fConstraintY4[468]; ///< Array for constraint equation St4 Y - Double_t fConstraintP4[468]; ///< Array for constraint equation St4 P - Double_t fConstraintX5[468]; ///< Array for constraint equation St5 X - Double_t fConstraintY5[468]; ///< Array for constraint equation St5 Y + Double_t fConstraintX[624]; ///< Array for constraint equation all X + Double_t fConstraintY[624]; ///< Array for constraint equation all Y + Double_t fConstraintP[624]; ///< Array for constraint equation all P + Double_t fConstraintXT[624]; ///< Array for constraint equation X Top half + Double_t fConstraintYT[624]; ///< Array for constraint equation Y Top half + Double_t fConstraintPT[624]; ///< Array for constraint equation P Top half + Double_t fConstraintXZT[624]; ///< Array for constraint equation X vs Z Top half + Double_t fConstraintYZT[624]; ///< Array for constraint equation Y vs Z Top half + Double_t fConstraintPZT[624]; ///< Array for constraint equation P vs Z Top half + Double_t fConstraintXYT[624]; ///< Array for constraint equation X vs Y Top half + Double_t fConstraintYYT[624]; ///< Array for constraint equation Y vs Y Top half + Double_t fConstraintPYT[624]; ///< Array for constraint equation P vs Y Top half + Double_t fConstraintXB[624]; ///< Array for constraint equation X Bottom half + Double_t fConstraintYB[624]; ///< Array for constraint equation Y Bottom half + Double_t fConstraintPB[624]; ///< Array for constraint equation P Bottom half + Double_t fConstraintXZB[624]; ///< Array for constraint equation X vs Z Bottom half + Double_t fConstraintYZB[624]; ///< Array for constraint equation Y vs Z Bottom half + Double_t fConstraintPZB[624]; ///< Array for constraint equation P vs Z Bottom half + Double_t fConstraintXYB[624]; ///< Array for constraint equation X vs Y Bottom half + Double_t fConstraintYYB[624]; ///< Array for constraint equation Y vs Y Bottom half + Double_t fConstraintPYB[624]; ///< Array for constraint equation P vs Y Bottom half + Double_t fConstraintXR[624]; ///< Array for constraint equation X Right half + Double_t fConstraintYR[624]; ///< Array for constraint equation Y Right half + Double_t fConstraintPR[624]; ///< Array for constraint equation P Right half + Double_t fConstraintXZR[624]; ///< Array for constraint equation X vs Z Right half + Double_t fConstraintYZR[624]; ///< Array for constraint equation Y vs Z Right half + Double_t fConstraintPZR[624]; ///< Array for constraint equation P vs Z Right half + Double_t fConstraintXYR[624]; ///< Array for constraint equation X vs Y Right half + Double_t fConstraintYYR[624]; ///< Array for constraint equation Y vs Y Right half + Double_t fConstraintPYR[624]; ///< Array for constraint equation P vs Y Right half + Double_t fConstraintXL[624]; ///< Array for constraint equation X Left half + Double_t fConstraintYL[624]; ///< Array for constraint equation Y Left half + Double_t fConstraintPL[624]; ///< Array for constraint equation P Left half + Double_t fConstraintXZL[624]; ///< Array for constraint equation X vs Z Left half + Double_t fConstraintYZL[624]; ///< Array for constraint equation Y vs Z Left half + Double_t fConstraintPZL[624]; ///< Array for constraint equation P vs Z Left half + Double_t fConstraintXYL[624]; ///< Array for constraint equation X vs Y Left half + Double_t fConstraintYYL[624]; ///< Array for constraint equation Y vs Y Left half + Double_t fConstraintPYL[624]; ///< Array for constraint equation P vs Y Left half + Double_t fConstraintX3[624]; ///< Array for constraint equation St3 X + Double_t fConstraintY3[624]; ///< Array for constraint equation St3 Y + Double_t fConstraintX4[624]; ///< Array for constraint equation St4 X + Double_t fConstraintY4[624]; ///< Array for constraint equation St4 Y + Double_t fConstraintP4[624]; ///< Array for constraint equation St4 P + Double_t fConstraintX5[624]; ///< Array for constraint equation St5 X + Double_t fConstraintY5[624]; ///< Array for constraint equation St5 Y Int_t fDetElemId; ///< Detection element id Int_t fDetElemNumber; ///< Detection element number @@ -183,7 +199,7 @@ public: static Int_t fgNDetElemCh[10]; ///< Number of detection elements per chamber static Int_t fgSNDetElemCh[10];///< Sum of detection elements up to this chamber (inc) -ClassDef(AliMUONAlignment, 0) //Class for alignment of muon spectrometer +ClassDef(AliMUONAlignment, 1) //Class for alignment of muon spectrometer }; #endif