]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSAlignMille2Module.h
Set the TPC-ITS matching check R between the outer acctive layer and fiducial mat...
[u/mrichter/AliRoot.git] / ITS / AliITSAlignMille2Module.h
index 23b442e75c7e9e466f990b4790e0d1211670dde1..2de4f068422cd5b37d28c6700c1adf06b7110b08 100644 (file)
@@ -28,8 +28,8 @@ class AliITSAlignMille2Module : public TNamed
 { \r
 public: \r
   enum {kSPD,kSDD,kSSD};\r
-  enum {kMaxParGeom=6,kMaxParTot=8,kSensDefBit=0,kGlobalGeomBit=1};\r
-  enum {kDOFTX,kDOFTY,kDOFTZ,kDOFPS,kDOFTH,kDOFPH,kDOFT0,kDOFDV};\r
+  enum {kMaxParGeom=6,kMaxParTot=9,kSensDefBit=BIT(14),kGlobalGeomBit=BIT(15),kNotInConfBit=BIT(16),kVdSDDSameLRBit=BIT(17)};\r
+  enum {kDOFTX,kDOFTY,kDOFTZ,kDOFPS,kDOFTH,kDOFPH,kDOFT0,kDOFDVL,kDOFDVR};\r
   //\r
   AliITSAlignMille2Module(); \r
   AliITSAlignMille2Module(UShort_t volid);\r
@@ -53,9 +53,12 @@ public:
   Float_t      GetSigmaYFactor()                      const {return fSigmaFactor[1];}\r
   Float_t      GetSigmaZFactor()                      const {return fSigmaFactor[2];}\r
   Int_t        GetNProcessedPoints()                  const {return fNProcPoints;}\r
-  Bool_t       IsFreeDOF(Int_t dof)                   const {return fParCstr[dof]>0;}\r
-  Bool_t       AreSensorsProvided()                   const {return TestBit(1<<(kSensDefBit+1));}\r
-  Bool_t       GeomParamsGlobal()                     const {return TestBit(1<<(kGlobalGeomBit+1));}\r
+  Bool_t       IsFreeDOF(Int_t dof)                   const {return dof<fNParTot && fParCstr[dof]>0;}\r
+  Bool_t       AreSensorsProvided()                   const {return TestBit(kSensDefBit);}\r
+  Bool_t       GeomParamsGlobal()                     const {return TestBit(kGlobalGeomBit);}\r
+  Bool_t       IsNotInConf()                          const {return TestBit(kNotInConfBit);}\r
+  Bool_t       IsVDriftLRSame()                       const {return TestBit(kVdSDDSameLRBit);}\r
+  //\r
   Bool_t       IsIn(UShort_t volid)                   const;\r
   Bool_t       IsAlignable()                          const;\r
   Bool_t       BelongsTo(AliITSAlignMille2Module* parent) const;\r
@@ -69,10 +72,10 @@ public:
   UShort_t     GetNParTot()                           const {return fNParTot;}\r
   UShort_t     GetNParFree()                          const {return fNParFree;}\r
   Float_t     *GetParVals()                           const {return fParVals;}\r
-  Double_t     GetParVal(int par)                     const {return fParVals[par];}\r
-  Double_t     GetParErr(int par)                     const {return fParErrs[par];}\r
-  Double_t     GetParConstraint(int par)              const {return fParCstr[par];}\r
-  Int_t        GetParOffset(Int_t par)                const {return fParOffs[par];}\r
+  Double_t     GetParVal(int par)                     const {return par<fNParTot ? fParVals[par] : 0;}\r
+  Double_t     GetParErr(int par)                     const {return par<fNParTot ? fParErrs[par] : 0;}\r
+  Double_t     GetParConstraint(int par)              const {return par<fNParTot ? fParCstr[par] : 0;}\r
+  Int_t        GetParOffset(Int_t par)                const {return par<fNParTot ? fParOffs[par] : -1;}\r
   Int_t        GetDetType()                           const {return fDetType;}\r
   Bool_t       IsParConstrained(Int_t par)            const {return fParCstr[par]>0 && fParCstr[par]<fgkDummyConstraint;}\r
   Bool_t       IsSPD()                                const {return fDetType == kSPD;}\r
@@ -95,8 +98,10 @@ public:
   void         SetParent(AliITSAlignMille2Module* par)      {fParent = par;}\r
   void         AddChild(AliITSAlignMille2Module* cld)       {fChildren.Add(cld);}\r
   void         SetFreeDOF(Int_t dof,Double_t cstr);\r
-  void         SetSensorsProvided(Bool_t v=kTRUE)           {SetBit(1<<(kSensDefBit+1),v);}\r
-  void         SetGeomParamsGlobal(Bool_t v=kTRUE)          {SetBit(1<<(kGlobalGeomBit+1),v);}\r
+  void         SetSensorsProvided(Bool_t v=kTRUE)           {SetBit(kSensDefBit,v);}\r
+  void         SetGeomParamsGlobal(Bool_t v=kTRUE)          {SetBit(kGlobalGeomBit,v);}\r
+  void         SetNotInConf(Bool_t v=kTRUE)                 {SetBit(kNotInConfBit,v);}\r
+  void         SetVDriftLRSame(Bool_t v=kTRUE)              {SetBit(kVdSDDSameLRBit,v);}\r
   Int_t        Set(Int_t index,UShort_t volid, const char* symname, const TGeoHMatrix *m,Int_t nsv=0, const UShort_t *volidsv=0);\r
   //\r
   void         AddSensitiveVolume(UShort_t volid);\r
@@ -108,18 +113,18 @@ public:
   //\r
   TGeoHMatrix *GetSensitiveVolumeMatrix(UShort_t voluid);\r
   TGeoHMatrix *GetSensitiveVolumeOrigGlobalMatrix(UShort_t voluid);\r
-  TGeoHMatrix *GetSensitiveVolumeModifiedMatrix(UShort_t voluid, Double_t *delta,Bool_t local=kTRUE); \r
-  AliAlignObjParams *GetSensitiveVolumeMisalignment(UShort_t voluid, AliAlignObjParams *a); \r
-  AliAlignObjParams *GetSensitiveVolumeMisalignment(UShort_t voluid, Double_t *deltalocal); \r
+  TGeoHMatrix *GetSensitiveVolumeModifiedMatrix(UShort_t voluid, const Double_t *delta,Bool_t local=kTRUE); \r
+  AliAlignObjParams *GetSensitiveVolumeMisalignment(UShort_t voluid, const AliAlignObjParams *a); \r
+  AliAlignObjParams *GetSensitiveVolumeMisalignment(UShort_t voluid, const Double_t *deltalocal); \r
   //\r
-  void         GetGlobalParams(Double_t *t, Double_t *r);\r
+  void         GetGlobalParams(Double_t *t, Double_t *r) const;\r
   void         GetGlobalParams(const Double_t *loct, const Double_t *locr,Double_t *t, Double_t *r);\r
   void         GetLocalParams(const Double_t *loct, const Double_t *locr,Double_t *t, Double_t *r);\r
   //\r
   void         GetSensVolGlobalParams(UShort_t volid,Double_t *t, Double_t *r);\r
   void         GetSensVolLocalParams(UShort_t volid,Double_t *t, Double_t *r);\r
-  void         GetSensVolGlobalParams(UShort_t volid,Double_t* loct,Double_t* locr,Double_t *t, Double_t *r);\r
-  void         GetSensVolLocalParams(UShort_t volid,Double_t* loct,Double_t* locr,Double_t *t, Double_t *r);\r
+  void         GetSensVolGlobalParams(UShort_t volid,const Double_t* loct,const Double_t* locr,Double_t *t, Double_t *r);\r
+  void         GetSensVolLocalParams(UShort_t volid,const Double_t* loct,const Double_t* locr,Double_t *t, Double_t *r);\r
   //\r
   void         CalcDerivLocGlo(Double_t *deriv);\r
   void         CalcDerivGloLoc(Int_t idx,Double_t *deriv);\r
@@ -128,9 +133,9 @@ public:
   void         CalcDerivDPosDPar(Int_t sensVol,const Double_t *pl,Double_t *deriv);\r
   //\r
   // forse non serve...\r
-  AliAlignObjParams *GetSensitiveVolumeGlobalMisalignment(UShort_t voluid, Double_t *deltalocal); \r
+  AliAlignObjParams *GetSensitiveVolumeGlobalMisalignment(UShort_t voluid, const Double_t *deltalocal); \r
   // mo' proviamo questo\r
-  AliAlignObjParams *GetSensitiveVolumeTotalMisalignment(UShort_t voluid, Double_t *deltalocal); \r
+  AliAlignObjParams *GetSensitiveVolumeTotalMisalignment(UShort_t voluid, const Double_t *deltalocal); \r
   //\r
   static Int_t    GetIndexFromVolumeID(UShort_t volid);\r
   static UShort_t GetVolumeIDFromSymname(const Char_t *symname);\r
@@ -168,7 +173,6 @@ protected:
   AliITSAlignMille2Module* fParent;               // optional parent pointer\r
   TObjArray      fChildren;                       // array of optional children\r
   //\r
-  static AliAlignObjParams fgTempAlignObj;        // temp.alignment object used as a buffer               \r
   static const Float_t fgkDummyConstraint;        // dummy (lose) contraint on parameter\r
   //\r
   ClassDef(AliITSAlignMille2Module, 0)\r