LCOV - code coverage report
Current view: top level - ITS/ITSbase - AliITSMisAligner.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 58 1.7 %
Date: 2016-06-14 17:26:59 Functions: 1 30 3.3 %

          Line data    Source code
       1             : #ifndef ALIITSMISALIGNER_H
       2             : #define ALIITSMISALIGNER_H
       3             : 
       4             : // Class building the alignment objects for ITS (SPD, SDD, SSD)
       5             : // It derives from AliMisAligner, thus providing the methods
       6             : // MakeAlObjsArray (builds and returns the array of alignment objects)
       7             : // and GetCDBMetaData (returns the metadata for the OCDB entry)
       8             : //
       9             : 
      10             : /* $Id$ */
      11             : 
      12             : #include <TString.h>
      13             : #include "AliMisAligner.h"
      14             : #include <TRandom3.h>
      15             : 
      16             : class TClonesArray;
      17             : class AliAlignObjParams;
      18             : 
      19             : //-------------------------------------------------------------------------
      20             : class AliITSMisAligner : public AliMisAligner{
      21             :     public:
      22             :         AliITSMisAligner();
      23           0 :         ~AliITSMisAligner() {};
      24             : 
      25             :         TClonesArray* MakeAlObjsArray();
      26             :         AliCDBMetaData* GetCDBMetaData() const;
      27             : 
      28           0 :         void  SetSeed(Int_t seed) {fRnd.SetSeed(seed); return;}
      29             : 
      30             :         void SetWholeITSPars(Double_t dx, Double_t dy, Double_t dz, Double_t dpsi, Double_t dtheta, Double_t dphi)
      31             :         {
      32           0 :             fWholeITS[0] = dx;   fWholeITS[1] = dy;     fWholeITS[2] = dz;
      33           0 :             fWholeITS[3] = dpsi; fWholeITS[4] = dtheta; fWholeITS[5] = dphi;
      34           0 :         }
      35             : 
      36             :         void SetSPDSectorSigmas(Double_t dx, Double_t dy, Double_t dz, Double_t dpsi, Double_t dtheta, Double_t dphi)
      37             :         {
      38           0 :             fSPDSector[0] = dx;   fSPDSector[1] = dy;     fSPDSector[2] = dz;
      39           0 :             fSPDSector[3] = dpsi; fSPDSector[4] = dtheta; fSPDSector[5] = dphi;
      40           0 :         }
      41             : 
      42             :         void SetSPDHSSigmas(Double_t dx, Double_t dy, Double_t dz, Double_t dpsi, Double_t dtheta, Double_t dphi)
      43             :         {
      44           0 :             fSPDHS[0] = dx;   fSPDHS[1] = dy;     fSPDHS[2] = dz;
      45           0 :             fSPDHS[3] = dpsi; fSPDHS[4] = dtheta; fSPDHS[5] = dphi;
      46           0 :         }
      47             : 
      48             :         void SetSPDLadderSigmas(Double_t dx, Double_t dy, Double_t dz, Double_t dpsi, Double_t dtheta, Double_t dphi)
      49             :         {
      50           0 :             fSPDLadder[0] = dx;   fSPDLadder[1] = dy;     fSPDLadder[2] = dz;
      51           0 :             fSPDLadder[3] = dpsi; fSPDLadder[4] = dtheta; fSPDLadder[5] = dphi;
      52           0 :         }
      53             : 
      54             :         void SetSPDHBSigmas(Double_t dx, Double_t dy, Double_t dz, Double_t dpsi, Double_t dtheta, Double_t dphi)
      55             :         {
      56           0 :             fSPDHB[0] = dx;   fSPDHB[1] = dy;     fSPDHB[2] = dz;
      57           0 :             fSPDHB[3] = dpsi; fSPDHB[4] = dtheta; fSPDHB[5] = dphi;
      58           0 :         }
      59             : 
      60             :         void SetSPDBarrelSigmas(Double_t dx, Double_t dy, Double_t dz, Double_t dpsi, Double_t dtheta, Double_t dphi)
      61             :         {
      62           0 :             fSPDBarrel[0] = dx;   fSPDBarrel[1] = dy;     fSPDBarrel[2] = dz;
      63           0 :             fSPDBarrel[3] = dpsi; fSPDBarrel[4] = dtheta; fSPDBarrel[5] = dphi;
      64           0 :         }
      65             : 
      66             :         void SetSDDLayerSigmas(Double_t dx, Double_t dy, Double_t dz, Double_t dpsi, Double_t dtheta, Double_t dphi)
      67             :         {
      68           0 :             fSDDLayer[0] = dx;   fSDDLayer[1] = dy;     fSDDLayer[2] = dz;
      69           0 :             fSDDLayer[3] = dpsi; fSDDLayer[4] = dtheta; fSDDLayer[5] = dphi;
      70           0 :         }
      71             : 
      72             :         void SetSDDBarrelSigmas(Double_t dx, Double_t dy, Double_t dz, Double_t dpsi, Double_t dtheta, Double_t dphi)
      73             :         {
      74           0 :             fSDDBarrel[0] = dx;   fSDDBarrel[1] = dy;     fSDDBarrel[2] = dz;
      75           0 :             fSDDBarrel[3] = dpsi; fSDDBarrel[4] = dtheta; fSDDBarrel[5] = dphi;
      76           0 :         }
      77             : 
      78             :         void SetSDDLadderSigmas(Double_t dx, Double_t dy, Double_t dz, Double_t dpsi, Double_t dtheta, Double_t dphi)
      79             :         {
      80           0 :             fSDDLadder[0] = dx;   fSDDLadder[1] = dy;     fSDDLadder[2] = dz;
      81           0 :             fSDDLadder[3] = dpsi; fSDDLadder[4] = dtheta; fSDDLadder[5] = dphi;
      82           0 :         }
      83             : 
      84             :         void SetSDDModuleSigmas(Double_t dx, Double_t dy, Double_t dz, Double_t dpsi, Double_t dtheta, Double_t dphi)
      85             :         {
      86           0 :             fSDDModule[0] = dx;   fSDDModule[1] = dy;     fSDDModule[2] = dz;
      87           0 :             fSDDModule[3] = dpsi; fSDDModule[4] = dtheta; fSDDModule[5] = dphi;
      88           0 :         }
      89             : 
      90             :         void SetSSDBarrelPars(Double_t dx, Double_t dy, Double_t dz, Double_t dpsi, Double_t dtheta, Double_t dphi)
      91             :         {
      92           0 :             fSSDBarrel[0] = dx;   fSSDBarrel[1] = dy;     fSSDBarrel[2] = dz;
      93           0 :             fSSDBarrel[3] = dpsi; fSSDBarrel[4] = dtheta; fSSDBarrel[5] = dphi;
      94           0 :         }
      95             : 
      96             :         void SetSSDLadderSigmas(Double_t dx, Double_t dy, Double_t dz, Double_t dpsi, Double_t dtheta, Double_t dphi)
      97             :         {
      98           0 :             fSSDLadder[0] = dx;   fSSDLadder[1] = dy;     fSSDLadder[2] = dz;
      99           0 :             fSSDLadder[3] = dpsi; fSSDLadder[4] = dtheta; fSSDLadder[5] = dphi;
     100           0 :         }
     101             : 
     102             :         void SetSSDModuleSigmas(Double_t dx, Double_t dy, Double_t dz, Double_t dpsi, Double_t dtheta, Double_t dphi)
     103             :         {
     104           0 :             fSSDModule[0] = dx;   fSSDModule[1] = dy;     fSSDModule[2] = dz;
     105           0 :             fSSDModule[3] = dpsi; fSSDModule[4] = dtheta; fSSDModule[5] = dphi;
     106           0 :         }
     107             : 
     108             :         void SetSPDLadderShiftT(Double_t dx, Double_t dy, Double_t dz, Double_t dpsi, Double_t dtheta, Double_t dphi)
     109             :         {
     110           0 :             fSPDLadderShiftT[0] = dx;   fSPDLadderShiftT[1] = dy;     fSPDLadderShiftT[2] = dz;
     111           0 :             fSPDLadderShiftT[3] = dpsi; fSPDLadderShiftT[4] = dtheta; fSPDLadderShiftT[5] = dphi;
     112           0 :         }
     113             : 
     114             :         void SetSPDLadderShiftB(Double_t dx, Double_t dy, Double_t dz, Double_t dpsi, Double_t dtheta, Double_t dphi)
     115             :         {
     116           0 :             fSPDLadderShiftB[0] = dx;   fSPDLadderShiftB[1] = dy;     fSPDLadderShiftB[2] = dz;
     117           0 :             fSPDLadderShiftB[3] = dpsi; fSPDLadderShiftB[4] = dtheta; fSPDLadderShiftB[5] = dphi;
     118           0 :         }
     119             : 
     120             :         void SetSPDLadderShiftT(Double_t pars[6])
     121             :         {
     122           0 :             for(Int_t ii=0; ii<6; ii++)
     123           0 :                 fSPDLadderShiftT[ii] = pars[ii];
     124           0 :         }
     125             : 
     126             :         void SetSPDLadderShiftB(Double_t pars[6])
     127             :         {
     128           0 :             for(Int_t ii=0; ii<6; ii++)
     129           0 :                 fSPDLadderShiftB[ii] = pars[ii];
     130           0 :         }
     131             : 
     132             :         void  SetWholeITSMisAlignment();
     133             :         void  SetSPDMisAlignment();
     134             :         void  SetSDDMisAlignment();
     135             :         void  SetSSDMisAlignment();
     136             : 
     137           0 :         Double_t GetUnif(Double_t x1,Double_t x2) {return fRnd.Uniform(x1,x2);}
     138             : 
     139             :         Bool_t AddAlignObj(char* name,Double_t dx,Double_t dy,Double_t dz,
     140             :                 Double_t dpsi,Double_t dtheta,Double_t dphi,
     141             :                 const char* distrib);
     142             : 
     143             :         Bool_t AddAlignObj(Int_t lay,Double_t dx,Double_t dy,Double_t dz,
     144             :                 Double_t dpsi,Double_t dtheta,Double_t dphi,
     145             :                 Bool_t unif);
     146             : 
     147             :         Bool_t AddAlignObj(Int_t lay,Int_t ladd,Double_t dx,Double_t dy,Double_t dz,
     148             :                 Double_t dpsi,Double_t dtheta,Double_t dphi,
     149             :                 Double_t xShift,Double_t yShift,Double_t zShift,
     150             :                 Double_t psiShift,Double_t thetaShift,Double_t phiShift,
     151             :                 Bool_t unif);
     152             : 
     153             :         Bool_t AddSectorAlignObj(Int_t sectMin,Int_t sectMax,
     154             :                 Double_t dx,Double_t dy,Double_t dz,
     155             :                 Double_t dpsi,Double_t dtheta,Double_t dphi,
     156             :                 Double_t xShift,Double_t yShift,Double_t zShift,
     157             :                 Double_t psiShift,Double_t thetaShift,Double_t phiShift,
     158             :                 Bool_t unif);
     159             : 
     160             :         void  ShiftAlignObj(AliAlignObjParams &alObj,Double_t dx,Double_t dy,Double_t dz,Double_t dpsi,Double_t dtheta,Double_t dphi);
     161             :         void  SmearAlignObj(AliAlignObjParams &alObj,Double_t sx,Double_t sy,Double_t sz,Double_t spsi,Double_t stheta,Double_t sphi);
     162             : 
     163             :         const char*  GetSymbName(Int_t layer) const;
     164             :         const char*  GetSymbName(Int_t layer,Int_t ladd) const;
     165             :         const char*  GetSymbName(Int_t layer,Int_t ladd,Int_t mod) const;
     166             :         const char*  GetHalfStaveLadderSymbName(Int_t layer,Int_t ladd,Int_t halfStave) const;
     167             :         static const char*  GetParentSymName(const char* symname) ;
     168             :         // const char*  GetSistersSymName(const char* symname) const;
     169             :         static Bool_t GetLayerAndLevel(const char* symname, Int_t &layer, Int_t &level);
     170             : 
     171           0 :         static Int_t GetNLayers()             {return kNLayers;}
     172           0 :         static Int_t GetNLadders(Int_t lay)   {return fgkNLadders[lay];}
     173           0 :         static Int_t GetNDetectors(Int_t lay) {return fgkNDetectors[lay];}
     174             :         static Int_t GetNSisters(const char* symname);
     175             :         static Int_t GetNDaughters(const char* symname);
     176             : 
     177             :     protected:
     178             :         TRandom3     fRnd; // TRandom3 object
     179             :         //TRandom     fRnd; // TRandom object
     180             :         Int_t        fInd; // index of current AliAlignObjParams in fAlignObjArray
     181             :         TClonesArray *fAlignObjArray; // array of AliAlignObjParams
     182             :         TString      fStrSPD; // name of SPD
     183             :         TString      fStrSDD; // name of SDD
     184             :         TString      fStrSSD; // name of SSD
     185             :         TString      fStrStave; // name of SPD stave
     186             :         TString      fStrHalfStave; // name of SPD half-stave
     187             :         TString      fStrLadder; // name of SPD ladder
     188             :         TString      fStrSector; // name of SPD sector
     189             :         TString      fStrSensor; // name of sensitive volume
     190             : 
     191             :     private:
     192             :         AliITSMisAligner(const AliITSMisAligner &mAligner);
     193             :         AliITSMisAligner &operator= (const AliITSMisAligner &mAligner);
     194             :         enum {kNLayers = 6}; // The number of layers.
     195             :         static const Int_t  fgkNLadders[kNLayers];  // Array of the number of ladders/layer(layer)
     196             :         static const Int_t  fgkNDetectors[kNLayers];// Array of the number of detector/ladder(layer)
     197             : 
     198             :         // Parameters setting the misalignment at all SPD/SDD/SSD levels
     199             :         Double_t fWholeITS[6];   // parameters for the whole TIS
     200             :         Double_t fSPDSector[6];  // sectors
     201             :         Double_t fSPDHB[6];      // SPD half barrel
     202             :         Double_t fSPDBarrel[6];  // SPD barrel
     203             :         Double_t fSPDHS[6];      // SPD half stave
     204             :         Double_t fSPDLadder[6];  // SPD ladder
     205             :         Double_t fSDDLayer[6];   // SPD layer
     206             :         Double_t fSDDBarrel[6];  // SDD barrel
     207             :         Double_t fSDDLadder[6];  // SDD ladder
     208             :         Double_t fSDDModule[6];  // SDD module
     209             :         Double_t fSSDBarrel[6];  // SSD barrel
     210             :         Double_t fSSDLayer[6];   // SSD layer
     211             :         Double_t fSSDLadder[6];  // SSD ladder
     212             :         Double_t fSSDModule[6];  // SSD module
     213             : 
     214             :         // Parameters setting common shifts (used for "full" misalignment)
     215             :         Double_t fSPDLadderShiftT[6]; // for top half-barrel ladders
     216             :         Double_t fSPDLadderShiftB[6]; // for bottom half-barrel ladders
     217             :         Double_t fSDDLadderShift1[6]; // for ladder first SDD layer
     218             :         Double_t fSDDLadderShift2[6]; // for ladder second SDD layer
     219             : 
     220             :         // Choice between uniform (kTRUE) or gaussian (kFALSE) distribution in the smearing
     221             :         Bool_t fUnifSPDSector;  // kTRUE if uniform smearing SPD sector
     222             :         Bool_t  fUnifSPDHS; // kTRUE if uniform smearing SPD HS
     223             :         Bool_t fUnifSDDLadder; // kTRUE if uniform smearing SDD ladder
     224             :         Bool_t fUnifSSDLadder; // kTRUE if uniform smearing SSD ladder
     225             :         Bool_t fUnifSPDLadder; // kTRUE if uniform smearing SPD ladder
     226             :         Bool_t fUnifSDDModule; // kTRUE if uniform smearing SDD module
     227             :         Bool_t fUnifSSDModule; // kTRUE if uniform smearing SSD module
     228             : 
     229         118 :         ClassDef(AliITSMisAligner,0)   //ITS MisAligner
     230             : };
     231             : 
     232             : 
     233             : #endif

Generated by: LCOV version 1.11