]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONAlignment.h
ReadRaw(): TGraphs are created once per event (B.Polichtchouk)
[u/mrichter/AliRoot.git] / MUON / AliMUONAlignment.h
CommitLineData
010eb601 1#ifndef ALIMUONALIGNMENT_H
2#define ALIMUONALIGNMENT_H
3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
6/* $Id$ */
7
8/// \ingroup rec
9/// \class AliMUONAlignment
10/// \brief Class for alignment of muon spectrometer
11//
12// Authors: Bruce Becker, Javier Castillo
13
14#include <TObject.h>
15
16class TGeoCombiTrans;
17class TClonesArray;
18class AliMillepede;
19class AliMUONGeometryTransformer;
20class AliMUONTrack;
21class AliMUONTrackParam;
22class AliMUONHitForRec;
23
24class AliMUONAlignment:public TObject
25{
26
27public:
28 AliMUONAlignment();
29 virtual ~AliMUONAlignment();
30
31 void ProcessTrack(AliMUONTrack *track);
32 void SetGeometryTransformer(AliMUONGeometryTransformer * transformer) {
33 fTransform = transformer;
34 }
35
010eb601 36 void FixStation(Int_t iSt);
37 void AllowVariations(Bool_t *bStOnOff);
38 void SetNonLinear(Bool_t *bStOnOff, Bool_t *bVarXYT);
39 void AddConstraints(Bool_t *bStOnOff, Bool_t *bVarXYT);
40 void AddConstraints(Bool_t *bStOnOff, Bool_t *bVarXYT, Bool_t *bDetTLBR);
41 void ResetConstraints();
42
43 void FixParameter(Int_t param, Double_t value);
44 void SetNonLinear(Int_t param);
45 void AddConstraint(Double_t *factor, Double_t value );
46 void InitGlobalParameters(Double_t *par);
47 void SetLocalDerivative(Int_t index, Double_t value) {
48 fLocalDerivatives[index] = value;
49 }
50 void SetGlobalDerivative(Int_t index, Double_t value) {
51 fGlobalDerivatives[index] = value;
52 }
53 void LocalFit(Int_t iTrack, Double_t *lTrackParam, Int_t lSingleFit);
54 void GlobalFit(Double_t *parameters,Double_t *errors,Double_t *pulls);
55 void PrintGlobalParameters();
56 Double_t GetParError(Int_t iPar);
57
58 AliMUONGeometryTransformer*
59 ReAlign(const AliMUONGeometryTransformer * transformer, double *misAlignments, Bool_t verbose);
60
61 protected:
62 AliMUONAlignment(const AliMUONAlignment& right);
63 AliMUONAlignment& operator = (const AliMUONAlignment& right);
64
65
66 private:
67
68 void Init(Int_t nGlobal, Int_t nLocal, Int_t nStdDev);
69 void ConstrainT(Int_t lDetElem, Int_t lCh, Double_t *lConstraintT, Int_t iVar);
70 void ConstrainL(Int_t lDetElem, Int_t lCh, Double_t *lConstraintL, Int_t iVar);
71 void ConstrainB(Int_t lDetElem, Int_t lCh, Double_t *lConstraintB, Int_t iVar);
72 void ConstrainR(Int_t lDetElem, Int_t lCh, Double_t *lConstraintR, Int_t iVar);
73 void FillDetElemData();
74 void FillRecPointData();
75 void FillTrackParamData();
76 void ResetLocalEquation();
77 void LocalEquationX();
78 void LocalEquationY();
79
80 TGeoCombiTrans ReAlign(const TGeoCombiTrans& transform, double *detElemMisAlignment) const;
81
82 Bool_t fBFieldOn; // Flag for Magnetic filed On/Off
83
84 Bool_t fDoF[3]; // Flags degrees of freedom to align (x,y,phi)
85 Double_t fAllowVar[3]; // "Encouraged" variation for degrees of freedom
86 Double_t fStartFac; // Initial value for chi2 cut
87 // if > 1 Iterations in AliMillepede are turned on
88 Double_t fResCutInitial; // Cut on residual for first iteration
89 Double_t fResCut; // Cut on residual for other iterations
90
91 AliMillepede *fMillepede; // Detector independent alignment class
92
93 TClonesArray *fTrackParamAtHit; // Array of track parameters
94 TClonesArray *fHitForRecAtHit; // Array of track hits
95 AliMUONTrack *fTrack; // AliMUONTrack
96 AliMUONHitForRec *fRecHit; // AliMUONHitForRec
97 AliMUONTrackParam *fTrackParam; // Track parameters
98
99 Int_t fNGlobal; // Number of global parameters
100 Int_t fNLocal; // Number of local parameters
101 Int_t fNStdDev; // Number of standard deviations for chi2 cut
102 Double_t fClustPos[3]; // Cluster position
103 Double_t fClustPosLoc[3]; // Cluster position in local coordinates
104 Double_t fTrackSlope0[2]; // Track slope at reference point
105 Double_t fTrackSlope[2]; // Track slope at current point
106 Double_t fTrackPos0[3]; // Track intersection at reference point
107 Double_t fTrackPos[3]; // Track intersection at current point
108 Double_t fTrackPosLoc[3]; // Track intersection at current point in local coordinates
109 Double_t fMeas[2]; // Current measurement (depend on B field On/Off)
110 Double_t fSigma[2]; // Estimated resolution on measurement
111
112 Double_t fGlobalDerivatives[468]; // Array of global derivatives
113 Double_t fLocalDerivatives[4]; // Array of local derivatives
114
115 Double_t fConstraintX[468]; // Array for constraint equation all X
116 Double_t fConstraintY[468]; // Array for constraint equation all Y
117 Double_t fConstraintP[468]; // Array for constraint equation all P
118 Double_t fConstraintXT[468]; // Array for constraint equation X Top half
119 Double_t fConstraintYT[468]; // Array for constraint equation Y Top half
120 Double_t fConstraintPT[468]; // Array for constraint equation P Top half
121 Double_t fConstraintXB[468]; // Array for constraint equation X Bottom half
122 Double_t fConstraintYB[468]; // Array for constraint equation Y Bottom half
123 Double_t fConstraintPB[468]; // Array for constraint equation P Bottom half
124 Double_t fConstraintXR[468]; // Array for constraint equation X Right half
125 Double_t fConstraintYR[468]; // Array for constraint equation Y Right half
126 Double_t fConstraintPR[468]; // Array for constraint equation P Right half
127 Double_t fConstraintXL[468]; // Array for constraint equation X Left half
128 Double_t fConstraintYL[468]; // Array for constraint equation Y Left half
129 Double_t fConstraintPL[468]; // Array for constraint equation P Left half
130 Double_t fConstraintX3[468]; // Array for constraint equation St3 X
131 Double_t fConstraintY3[468]; // Array for constraint equation St3 Y
132 Double_t fConstraintX4[468]; // Array for constraint equation St4 X
133 Double_t fConstraintY4[468]; // Array for constraint equation St4 Y
134 Double_t fConstraintP4[468]; // Array for constraint equation St4 P
135 Double_t fConstraintX5[468]; // Array for constraint equation St5 X
136 Double_t fConstraintY5[468]; // Array for constraint equation St5 Y
137
138 Int_t fDetElemId; // Detection element id
139 Int_t fDetElemNumber; // Detection element number
140 Double_t fPhi; // Azimuthal tilt of detection element
141 Double_t fCosPhi; // Cosine of fPhi
142 Double_t fSinPhi; // Sine of fPhi
143 Double_t fDetElemPos[3]; // Position of detection element
144
145 AliMUONGeometryTransformer *fTransform; // Geometry transformation
146
147 static Int_t fgNSt; // Number tracking stations
148 static Int_t fgNCh; // Number tracking chambers
149 static Int_t fgNParCh; // Number of degrees of freedom per chamber
150 static Int_t fgNDetElem; // Total number of detection elements
151 static Int_t fgNDetElemCh[10]; // Number of detection elements per chamber
152 static Int_t fgSNDetElemCh[10];// Sum of detection elements up to this chamber (inc)
153
154ClassDef(AliMUONAlignment, 0)};
155
156#endif