]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSAlignMille2Module.h
end-of-line normalization
[u/mrichter/AliRoot.git] / ITS / AliITSAlignMille2Module.h
index 2de4f068422cd5b37d28c6700c1adf06b7110b08..72250c5aa1c3f73c05fac00f9a55766532795940 100644 (file)
-#ifndef ALIITSALIGNMILLE2MODULE_H\r
-#define ALIITSALIGNMILLE2MODULE_H \r
-/* Copyright(c) 2007-2009 , ALICE Experiment at CERN, All rights reserved. * \r
- * See cxx source for full Copyright notice                               */  \r
\r
-/// \ingroup rec \r
-/// \class AliITSAlignMille2Module\r
-/// \brief Class for alignment of ITS \r
-// \r
-// Authors: Marcello Lunardon \r
-//\r
-// RS Converted static arrays fSensVolVolumeID and fSensVolIndex\r
-// to TArrays in user transparent way.\r
-//\r
-/* $Id$  */ \r
-//#include <TString.h> \r
-//#include <TObject.h> \r
-#include <TNamed.h> \r
-#include <TArrayI.h> \r
-#include <TArrayS.h> \r
-#include <TObjArray.h> \r
-class AliITSAlignMille2;\r
-\r
-class AliAlignObjParams; \r
-class TGeoHMatrix; \r
-\r
-class AliITSAlignMille2Module : public TNamed \r
-{ \r
-public: \r
-  enum {kSPD,kSDD,kSSD};\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
-  AliITSAlignMille2Module(Int_t index, UShort_t volid, const char* symname, const TGeoHMatrix *m, Int_t nsv=0, const UShort_t *volidsv=NULL);\r
-  AliITSAlignMille2Module(const AliITSAlignMille2Module& rhs); // copy constructor\r
-  AliITSAlignMille2Module& operator=(const AliITSAlignMille2Module& rhs);  \r
-  //\r
-  virtual ~AliITSAlignMille2Module(); \r
-  //\r
-  // geometry methods  \r
-  Int_t        GetIndex()                             const {return fIndex;} \r
-  UShort_t     GetVolumeID()                          const {return fVolumeID;}  \r
-  Int_t        GetNSensitiveVolumes()                 const {return fNSensVol;} \r
-  Int_t        GetSensVolIndex(Int_t at)              const {return fSensVolIndex[at];}\r
-  Short_t      GetSensVolVolumeID(Int_t at)           const {return fSensVolVolumeID[at];}\r
-  TGeoHMatrix *GetMatrix()                            const {return fMatrix;}\r
-  void         GetLocalMatrix(TGeoHMatrix& mat)       const;\r
-  UShort_t    *GetSensitiveVolumeVolumeID()           const {return (UShort_t*)fSensVolVolumeID.GetArray();}\r
-  Float_t      GetSigmaFactor(Int_t i)                const {return fSigmaFactor[i];}\r
-  Float_t      GetSigmaXFactor()                      const {return fSigmaFactor[0];}\r
-  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 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
-  AliITSAlignMille2Module* GetParent()                const {return fParent;}\r
-  AliITSAlignMille2Module* GetChild(Int_t i)          const {return (AliITSAlignMille2Module*)fChildren[i];}\r
-  Int_t        GetNChildren()                         const {return fChildren.GetLast()+1;}\r
-  //\r
-  void         Print(Option_t* opt="")                const; \r
-  //\r
-  void         EvaluateDOF();\r
-  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 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
-  Bool_t       IsSDD()                                const {return fDetType == kSDD;}\r
-  Bool_t       IsSSD()                                const {return fDetType == kSSD;}\r
-  Bool_t       IsSensor()                             const {return IsSensor(fVolumeID);}\r
-  void         SetDetType(Int_t tp)                         {fDetType = tp;}\r
-  void         SetParOffset(Int_t par,Int_t offs)           {fParOffs[par] = offs;}\r
-  //\r
-  void         SetParVals(Double_t *vl,Int_t npar);          \r
-  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]=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(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
-  void         DelSensitiveVolume(Int_t at);\r
-  void         DelSensitiveVolumes()                        {fNSensVol = 0;}\r
-  //\r
-  void         GetGeomParamsGlo(Double_t *pars);\r
-  void         GetGeomParamsLoc(Double_t *pars);\r
-  //\r
-  TGeoHMatrix *GetSensitiveVolumeMatrix(UShort_t voluid);\r
-  TGeoHMatrix *GetSensitiveVolumeOrigGlobalMatrix(UShort_t voluid);\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) 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,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
-  void         CalcDerivGloLoc(Int_t sensVol,Int_t paridx,Double_t* derivative);\r
-  void         CalcDerivCurLoc(Int_t sensVol,Int_t paridx,Double_t* derivative);\r
-  void         CalcDerivDPosDPar(Int_t sensVol,const Double_t *pl,Double_t *deriv);\r
-  //\r
-  // forse non serve...\r
-  AliAlignObjParams *GetSensitiveVolumeGlobalMisalignment(UShort_t voluid, const Double_t *deltalocal); \r
-  // mo' proviamo questo\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
-  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
-  //\r
-protected:\r
-  //\r
-  Int_t          fNSensVol;                       // number of sensor it refers to\r
-  Int_t          fIndex;                          // aliroot index\r
-  Int_t          fDetType;                        // Detector type\r
-  UShort_t       fVolumeID;                       // aliroot volune ID\r
-  UShort_t       fNParTot;                        // total number of parameters\r
-  UShort_t       fNParFree;                       // number of free parameters\r
-  TArrayS        fParOffs;                        // offsets of free params in the fit results\r
-  Int_t          fNProcPoints;                    // number of processed points\r
-  Float_t        fSigmaFactor[3];                 // multiplicative factor for referred sensor X,Y,Z error\r
-  Float_t       *fParVals;                        // values of the fitted params\r
-  Float_t       *fParErrs;                        // errors of the fitted params\r
-  Float_t       *fParCstr;                        // Gaussian type constraint on parameter, 0 means fixed param\r
-  //\r
-  TArrayI        fSensVolIndex;                   // aliroot indices for sensors\r
-  TArrayS        fSensVolVolumeID;                // aliroot indices for sensors volumes\r
-  TGeoHMatrix   *fMatrix;                         // ideal TGeoHMatrix of the supermodule\r
-  TGeoHMatrix   *fSensVolMatrix;                  // sensor's ideal matrices\r
-  TGeoHMatrix   *fSensVolModifMatrix;             // sensor's modified matrices\r
-  //\r
-  AliITSAlignMille2Module* fParent;               // optional parent pointer\r
-  TObjArray      fChildren;                       // array of optional children\r
-  //\r
-  static const Float_t fgkDummyConstraint;        // dummy (lose) contraint on parameter\r
-  //\r
-  ClassDef(AliITSAlignMille2Module, 0)\r
-}; \r
-\r
-#endif \r
+#ifndef ALIITSALIGNMILLE2MODULE_H
+#define ALIITSALIGNMILLE2MODULE_H 
+/* Copyright(c) 2007-2009 , ALICE Experiment at CERN, All rights reserved. * 
+ * See cxx source for full Copyright notice                               */  
+/// \ingroup rec 
+/// \class AliITSAlignMille2Module
+/// \brief Class for alignment of ITS 
+// 
+// Authors: Marcello Lunardon 
+//
+// RS Converted static arrays fSensVolVolumeID and fSensVolIndex
+// to TArrays in user transparent way.
+//
+/* $Id$  */ 
+//#include <TString.h> 
+//#include <TObject.h> 
+#include <TNamed.h> 
+#include <TArrayI.h> 
+#include <TArrayS.h> 
+#include <TObjArray.h> 
+class AliITSAlignMille2;
+
+class AliAlignObjParams; 
+class TGeoHMatrix; 
+
+class AliITSAlignMille2Module : public TNamed 
+{ 
+public: 
+  enum {kSPD,kSDD,kSSD};
+  enum {kMaxParGeom=6,kMaxParTot=9,kSensDefBit=BIT(14),kGlobalGeomBit=BIT(15),kNotInConfBit=BIT(16),kVdSDDSameLRBit=BIT(17)};
+  enum {kDOFTX,kDOFTY,kDOFTZ,kDOFPS,kDOFTH,kDOFPH,kDOFT0,kDOFDVL,kDOFDVR};
+  //
+  AliITSAlignMille2Module(); 
+  AliITSAlignMille2Module(UShort_t volid);
+  AliITSAlignMille2Module(Int_t index, UShort_t volid, const char* symname, const TGeoHMatrix *m, Int_t nsv=0, const UShort_t *volidsv=NULL);
+  AliITSAlignMille2Module(const AliITSAlignMille2Module& rhs); // copy constructor
+  AliITSAlignMille2Module& operator=(const AliITSAlignMille2Module& rhs);  
+  //
+  virtual ~AliITSAlignMille2Module(); 
+  //
+  // geometry methods  
+  Int_t        GetIndex()                             const {return fIndex;} 
+  UShort_t     GetVolumeID()                          const {return fVolumeID;}  
+  Int_t        GetNSensitiveVolumes()                 const {return fNSensVol;} 
+  Int_t        GetSensVolIndex(Int_t at)              const {return fSensVolIndex[at];}
+  Short_t      GetSensVolVolumeID(Int_t at)           const {return fSensVolVolumeID[at];}
+  TGeoHMatrix *GetMatrix()                            const {return fMatrix;}
+  void         GetLocalMatrix(TGeoHMatrix& mat)       const;
+  UShort_t    *GetSensitiveVolumeVolumeID()           const {return (UShort_t*)fSensVolVolumeID.GetArray();}
+  Float_t      GetSigmaFactor(Int_t i)                const {return fSigmaFactor[i];}
+  Float_t      GetSigmaXFactor()                      const {return fSigmaFactor[0];}
+  Float_t      GetSigmaYFactor()                      const {return fSigmaFactor[1];}
+  Float_t      GetSigmaZFactor()                      const {return fSigmaFactor[2];}
+  Int_t        GetNProcessedPoints()                  const {return fNProcPoints;}
+  Bool_t       IsFreeDOF(Int_t dof)                   const {return dof<fNParTot && fParCstr[dof]>0;}
+  Bool_t       AreSensorsProvided()                   const {return TestBit(kSensDefBit);}
+  Bool_t       GeomParamsGlobal()                     const {return TestBit(kGlobalGeomBit);}
+  Bool_t       IsNotInConf()                          const {return TestBit(kNotInConfBit);}
+  Bool_t       IsVDriftLRSame()                       const {return TestBit(kVdSDDSameLRBit);}
+  //
+  Bool_t       IsIn(UShort_t volid)                   const;
+  Bool_t       IsAlignable()                          const;
+  Bool_t       BelongsTo(AliITSAlignMille2Module* parent) const;
+  AliITSAlignMille2Module* GetParent()                const {return fParent;}
+  AliITSAlignMille2Module* GetChild(Int_t i)          const {return (AliITSAlignMille2Module*)fChildren[i];}
+  Int_t        GetNChildren()                         const {return fChildren.GetLast()+1;}
+  //
+  void         Print(Option_t* opt="")                const; 
+  //
+  void         EvaluateDOF();
+  UShort_t     GetNParTot()                           const {return fNParTot;}
+  UShort_t     GetNParFree()                          const {return fNParFree;}
+  Float_t     *GetParVals()                           const {return fParVals;}
+  Double_t     GetParVal(int par)                     const {return par<fNParTot ? fParVals[par] : 0;}
+  Double_t     GetParErr(int par)                     const {return par<fNParTot ? fParErrs[par] : 0;}
+  Double_t     GetParConstraint(int par)              const {return par<fNParTot ? fParCstr[par] : 0;}
+  Int_t        GetParOffset(Int_t par)                const {return par<fNParTot ? fParOffs[par] : -1;}
+  Int_t        GetDetType()                           const {return fDetType;}
+  Bool_t       IsParConstrained(Int_t par)            const {return fParCstr[par]>0 && fParCstr[par]<fgkDummyConstraint;}
+  Bool_t       IsSPD()                                const {return fDetType == kSPD;}
+  Bool_t       IsSDD()                                const {return fDetType == kSDD;}
+  Bool_t       IsSSD()                                const {return fDetType == kSSD;}
+  Bool_t       IsSensor()                             const {return IsSensor(fVolumeID);}
+  void         SetDetType(Int_t tp)                         {fDetType = tp;}
+  void         SetParOffset(Int_t par,Int_t offs)           {fParOffs[par] = offs;}
+  //
+  void         SetParVals(Double_t *vl,Int_t npar);          
+  void         SetParVal(Int_t par,Double_t v=0)            {fParVals[par] = v;}
+  void         SetParErr(Int_t par,Double_t e=0)            {fParErrs[par] = e;}
+  void         SetParConstraint(Int_t par,Double_t s=1e6)   {fParCstr[par] = s>0. ? s:0.0;}
+  void         SetSigmaFactor(Int_t i,Float_t v)            {fSigmaFactor[i]=TMath::Max(0.001F,v);}
+  void         SetSigmaXFactor(Float_t v)                   {SetSigmaFactor(0,v);}
+  void         SetSigmaYFactor(Float_t v)                   {SetSigmaFactor(1,v);}
+  void         SetSigmaZFactor(Float_t v)                   {SetSigmaFactor(2,v);}
+  void         IncNProcessedPoints(Int_t step=1)            {fNProcPoints += step;}
+  void         SetNProcessedPoints(Int_t v)                 {fNProcPoints = v;}
+  void         SetParent(AliITSAlignMille2Module* par)      {fParent = par;}
+  void         AddChild(AliITSAlignMille2Module* cld)       {fChildren.Add(cld);}
+  void         SetFreeDOF(Int_t dof,Double_t cstr);
+  void         SetSensorsProvided(Bool_t v=kTRUE)           {SetBit(kSensDefBit,v);}
+  void         SetGeomParamsGlobal(Bool_t v=kTRUE)          {SetBit(kGlobalGeomBit,v);}
+  void         SetNotInConf(Bool_t v=kTRUE)                 {SetBit(kNotInConfBit,v);}
+  void         SetVDriftLRSame(Bool_t v=kTRUE)              {SetBit(kVdSDDSameLRBit,v);}
+  Int_t        Set(Int_t index,UShort_t volid, const char* symname, const TGeoHMatrix *m,Int_t nsv=0, const UShort_t *volidsv=0);
+  //
+  void         AddSensitiveVolume(UShort_t volid);
+  void         DelSensitiveVolume(Int_t at);
+  void         DelSensitiveVolumes()                        {fNSensVol = 0;}
+  //
+  void         GetGeomParamsGlo(Double_t *pars);
+  void         GetGeomParamsLoc(Double_t *pars);
+  //
+  TGeoHMatrix *GetSensitiveVolumeMatrix(UShort_t voluid);
+  TGeoHMatrix *GetSensitiveVolumeOrigGlobalMatrix(UShort_t voluid);
+  TGeoHMatrix *GetSensitiveVolumeModifiedMatrix(UShort_t voluid, const Double_t *delta,Bool_t local=kTRUE); 
+  AliAlignObjParams *GetSensitiveVolumeMisalignment(UShort_t voluid, const AliAlignObjParams *a); 
+  AliAlignObjParams *GetSensitiveVolumeMisalignment(UShort_t voluid, const Double_t *deltalocal); 
+  //
+  void         GetGlobalParams(Double_t *t, Double_t *r) const;
+  void         GetGlobalParams(const Double_t *loct, const Double_t *locr,Double_t *t, Double_t *r);
+  void         GetLocalParams(const Double_t *loct, const Double_t *locr,Double_t *t, Double_t *r);
+  //
+  void         GetSensVolGlobalParams(UShort_t volid,Double_t *t, Double_t *r);
+  void         GetSensVolLocalParams(UShort_t volid,Double_t *t, Double_t *r);
+  void         GetSensVolGlobalParams(UShort_t volid,const Double_t* loct,const Double_t* locr,Double_t *t, Double_t *r);
+  void         GetSensVolLocalParams(UShort_t volid,const Double_t* loct,const Double_t* locr,Double_t *t, Double_t *r);
+  //
+  void         CalcDerivLocGlo(Double_t *deriv);
+  void         CalcDerivGloLoc(Int_t idx,Double_t *deriv);
+  void         CalcDerivGloLoc(Int_t sensVol,Int_t paridx,Double_t* derivative);
+  void         CalcDerivCurLoc(Int_t sensVol,Int_t paridx,Double_t* derivative);
+  void         CalcDerivDPosDPar(Int_t sensVol,const Double_t *pl,Double_t *deriv);
+  //
+  // forse non serve...
+  AliAlignObjParams *GetSensitiveVolumeGlobalMisalignment(UShort_t voluid, const Double_t *deltalocal); 
+  // mo' proviamo questo
+  AliAlignObjParams *GetSensitiveVolumeTotalMisalignment(UShort_t voluid, const Double_t *deltalocal); 
+  //
+  static Int_t    GetIndexFromVolumeID(UShort_t volid);
+  static UShort_t GetVolumeIDFromSymname(const Char_t *symname);
+  static UShort_t GetVolumeIDFromIndex(Int_t index);
+  static Bool_t   IsSensor(UShort_t vid);
+  static Int_t    SensVolMatrix(UShort_t volid, TGeoHMatrix *m); 
+  static Int_t    SensVolOrigGlobalMatrix(UShort_t volid, TGeoHMatrix *m); 
+
+  //
+protected:
+  //
+  void         AssignDetType();
+  //
+protected:
+  //
+  Int_t          fNSensVol;                       // number of sensor it refers to
+  Int_t          fIndex;                          // aliroot index
+  Int_t          fDetType;                        // Detector type
+  UShort_t       fVolumeID;                       // aliroot volune ID
+  UShort_t       fNParTot;                        // total number of parameters
+  UShort_t       fNParFree;                       // number of free parameters
+  TArrayS        fParOffs;                        // offsets of free params in the fit results
+  Int_t          fNProcPoints;                    // number of processed points
+  Float_t        fSigmaFactor[3];                 // multiplicative factor for referred sensor X,Y,Z error
+  Float_t       *fParVals;                        // values of the fitted params
+  Float_t       *fParErrs;                        // errors of the fitted params
+  Float_t       *fParCstr;                        // Gaussian type constraint on parameter, 0 means fixed param
+  //
+  TArrayI        fSensVolIndex;                   // aliroot indices for sensors
+  TArrayS        fSensVolVolumeID;                // aliroot indices for sensors volumes
+  TGeoHMatrix   *fMatrix;                         // ideal TGeoHMatrix of the supermodule
+  TGeoHMatrix   *fSensVolMatrix;                  // sensor's ideal matrices
+  TGeoHMatrix   *fSensVolModifMatrix;             // sensor's modified matrices
+  //
+  AliITSAlignMille2Module* fParent;               // optional parent pointer
+  TObjArray      fChildren;                       // array of optional children
+  //
+  static const Float_t fgkDummyConstraint;        // dummy (lose) contraint on parameter
+  //
+  ClassDef(AliITSAlignMille2Module, 0)
+}; 
+
+#endif