-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAliAlgSens.h
99 lines (90 loc) · 3.7 KB
/
AliAlgSens.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#ifndef ALIALGSENS_H
#define ALIALGSENS_H
#include "AliAlgVol.h"
#include <TMath.h>
class AliTrackPointArray;
class AliESDtrack;
class AliAlgDet;
class AliAlgPoint;
class TObjArray;
class AliExternalTrackParam;
class AliAlgDOFStat;
class TCloneArray;
/*--------------------------------------------------------
End-chain alignment volume in detector branch, where the actual measurement is done.
-------------------------------------------------------*/
// Author: [email protected]
class AliAlgSens : public AliAlgVol
{
public:
//
AliAlgSens(const char* name=0, Int_t vid=0, Int_t iid=0);
virtual ~AliAlgSens();
//
virtual void AddChild(AliAlgVol*);
//
void SetDetector(AliAlgDet* det) {fDet = det;}
AliAlgDet* GetDetector() const {return fDet;}
//
Int_t GetSID() const {return fSID;}
void SetSID(int s) {fSID = s;}
//
void IncrementStat() {fNProcPoints++;}
//
// derivatives calculation
virtual void DPosTraDParCalib(const AliAlgPoint* pnt,double* deriv,int calibID,const AliAlgVol* parent=0) const;
virtual void DPosTraDParGeom(const AliAlgPoint* pnt, double* deriv,const AliAlgVol* parent=0) const;
//
virtual void DPosTraDParGeomLOC(const AliAlgPoint* pnt, double* deriv) const;
virtual void DPosTraDParGeomTRA(const AliAlgPoint* pnt, double* deriv) const;
virtual void DPosTraDParGeomLOC(const AliAlgPoint* pnt, double* deriv, const AliAlgVol* parent) const;
virtual void DPosTraDParGeomTRA(const AliAlgPoint* pnt, double* deriv, const AliAlgVol* parent) const;
//
void GetModifiedMatrixT2LmodLOC(TGeoHMatrix& matMod, const Double_t *delta) const;
void GetModifiedMatrixT2LmodTRA(TGeoHMatrix& matMod, const Double_t *delta) const;
//
virtual void ApplyAlignmentFromMPSol();
//
void SetAddError(double y, double z) {fAddError[0]=y;fAddError[1]=z;}
const Double_t* GetAddError() const {return fAddError;}
//
virtual void PrepareMatrixT2L();
//
virtual void SetTrackingFrame();
virtual Bool_t IsSensor() const {return kTRUE;}
virtual void Print(const Option_t *opt="") const;
//
virtual void UpdatePointByTrackInfo(AliAlgPoint* pnt, const AliExternalTrackParam* t) const;
virtual void UpdateL2GRecoMatrices(const TClonesArray* algArr,const TGeoHMatrix* cumulDelta);
//
virtual AliAlgPoint* TrackPoint2AlgPoint(int pntId, const AliTrackPointArray* trpArr, const AliESDtrack* t) = 0;
//
virtual Int_t FinalizeStat(AliAlgDOFStat* h=0);
//
virtual void PrepareMatrixClAlg();
virtual void PrepareMatrixClAlgReco();
const TGeoHMatrix& GetMatrixClAlg() const {return fMatClAlg;}
const TGeoHMatrix& GetMatrixClAlgReco() const {return fMatClAlgReco;}
void SetMatrixClAlg(const TGeoHMatrix& m) {fMatClAlg = m;}
void SetMatrixClAlgReco(const TGeoHMatrix& m) {fMatClAlgReco = m;}
//
protected:
//
virtual Bool_t IsSortable() const {return kTRUE;}
virtual Int_t Compare(const TObject* a) const;
//
// --------- dummies -----------
AliAlgSens(const AliAlgSens&);
AliAlgSens& operator=(const AliAlgSens&);
//
protected:
//
Int_t fSID; // sensor id in detector
Double_t fAddError[2]; // additional error increment for measurement
AliAlgDet* fDet; // pointer on detector
TGeoHMatrix fMatClAlg; // reference cluster alignment matrix in tracking frame
TGeoHMatrix fMatClAlgReco; // reco-time cluster alignment matrix in tracking frame
//
ClassDef(AliAlgSens,1)
};
#endif