]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSAlignMille2Module.h
Fixes for Coverity warnings
[u/mrichter/AliRoot.git] / ITS / AliITSAlignMille2Module.h
index 6305b4818ac561e49e2c668d8a51987d4bb03b57..1c82a6b3461ae4d781d562371d0c34b4391a16ac 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
@@ -86,17 +89,19 @@ public:
   void         SetParVal(Int_t par,Double_t v=0)            {fParVals[par] = v;}\r
   void         SetParErr(Int_t par,Double_t e=0)            {fParErrs[par] = e;}\r
   void         SetParConstraint(Int_t par,Double_t s=1e6)   {fParCstr[par] = s>0. ? s:0.0;}\r
-  void         SetSigmaFactor(Int_t i,Float_t v)            {fSigmaFactor[i]=v;}\r
-  void         SetSigmaXFactor(Float_t v)                   {fSigmaFactor[0]=v;}\r
-  void         SetSigmaYFactor(Float_t v)                   {fSigmaFactor[1]=v;}\r
-  void         SetSigmaZFactor(Float_t v)                   {fSigmaFactor[2]=v;}\r
+  void         SetSigmaFactor(Int_t i,Float_t v)            {fSigmaFactor[i]=TMath::Max(0.001F,v);}\r
+  void         SetSigmaXFactor(Float_t v)                   {SetSigmaFactor(0,v);}\r
+  void         SetSigmaYFactor(Float_t v)                   {SetSigmaFactor(1,v);}\r
+  void         SetSigmaZFactor(Float_t v)                   {SetSigmaFactor(2,v);}\r
   void         IncNProcessedPoints(Int_t step=1)            {fNProcPoints += step;}\r
   void         SetNProcessedPoints(Int_t v)                 {fNProcPoints = v;}\r
   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
@@ -136,12 +141,13 @@ public:
   static UShort_t GetVolumeIDFromSymname(const Char_t *symname);\r
   static UShort_t GetVolumeIDFromIndex(Int_t index);\r
   static Bool_t   IsSensor(UShort_t vid);\r
+  static Int_t    SensVolMatrix(UShort_t volid, TGeoHMatrix *m); \r
+  static Int_t    SensVolOrigGlobalMatrix(UShort_t volid, TGeoHMatrix *m); \r
+\r
   //\r
 protected:\r
   //\r
   void         AssignDetType();\r
-  Int_t        SensVolMatrix(UShort_t volid, TGeoHMatrix *m); \r
-  Int_t        SensVolOrigGlobalMatrix(UShort_t volid, TGeoHMatrix *m); \r
   //\r
 protected:\r
   //\r