]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSMisalignMaker.h
New macros DrawITSAlignObj.C and MakeITSRealisticMisAlignment.C with associated class...
[u/mrichter/AliRoot.git] / ITS / AliITSMisalignMaker.h
1 #ifndef ALIITSMISALIGNMAKER_H
2 #define ALIITSMISALIGNMAKER_H
3 /* Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 //------------------------------------------------------------------------
9 //
10 // This class is a helper, producing ITS aligmnent objects.
11 // It provides also some useful functions
12 // See the parameters of the misalignment at the end of this script.
13 //
14 // Main author: L. Gaudichet
15 // Contact: andrea.dainese@lnl.infn.it
16 //
17 //------------------------------------------------------------------------
18
19 #include <TRandom3.h>
20 #include <TString.h>
21 #include <TClonesArray.h>
22
23
24 //-------------------------------------------------------------------------
25 class AliITSMisalignMaker : public TObject {
26   
27 public:
28   AliITSMisalignMaker();
29   
30   ~AliITSMisalignMaker() {};
31   
32   TClonesArray* GetArray() {return &fAlobj;}
33
34   void  SetSeed(Int_t seed) {fRnd.SetSeed(seed); return;}
35   
36   Int_t AddAlignObj(char* name,Double_t dx,Double_t dy,Double_t dz,
37                     Double_t dpsi,Double_t dtheta,Double_t dphi,
38                     Bool_t unif);
39
40   Int_t AddAlignObj(Int_t lay,Double_t dx,Double_t dy,Double_t dz,
41                     Double_t dpsi,Double_t dtheta,Double_t dphi,
42                     Bool_t unif);
43
44   Int_t AddAlignObj(Int_t lay,Int_t ladd,Double_t dx,Double_t dy,Double_t dz,
45                     Double_t dpsi,Double_t dtheta,Double_t dphi,
46                     Bool_t unif);
47
48   Int_t AddSectorAlignObj(Int_t sectMin,Int_t sectMax,
49                           Double_t dx,Double_t dy,Double_t dz,
50                           Double_t dpsi,Double_t dtheta,Double_t dphi,
51                           Double_t xShift,Double_t yShift,Double_t zShift,
52                           Double_t psiShift,Double_t thetaShift,Double_t phiShift,
53                           Bool_t unif);
54
55   TString  GetSymbName(Int_t layer) const;
56   TString  GetSymbName(Int_t layer,Int_t ladd) const;
57   TString  GetHalfStaveLadderSymbName(Int_t layer,Int_t ladd,Int_t halfStave) const;
58   TString  GetSymbName(Int_t layer,Int_t ladd,Int_t mod) const;
59   Double_t GaussCut(Double_t mean,Double_t sigma,Double_t cutn);
60   
61   static Int_t GetNLayers()             {return kNLayers;}
62   static Int_t GetNLadders(Int_t lay)   {return fgkNLadders[lay];}
63   static Int_t GetNDetectors(Int_t lay) {return fgkNDetectors[lay];}
64
65 protected:
66   TRandom3     fRnd; // TRandom object
67   Int_t        fInd; // index of current AliAlignObjParams in fAlobj
68   TClonesArray fAlobj; // array of AliAlignObjParams
69   TString      fStrSPD; // name of SPD
70   TString      fStrSDD; // name of SDD
71   TString      fStrSSD; // name of SSD
72   TString      fStrStave; // name of SPD stave
73   TString      fStrHalfStave; // name of SPD half-stave
74   TString      fStrLadder; // name of SPD ladder
75   TString      fStrSector; // name of SPD sector
76   TString      fStrSensor; // name of sensitive volume
77
78 private:
79   enum {kNLayers = 6}; // The number of layers.
80   static const Int_t  fgkNLadders[kNLayers];  // Array of the number of ladders/layer(layer)
81   static const Int_t  fgkNDetectors[kNLayers];// Array of the number of detector/ladder(layer)
82
83   ClassDef(AliITSMisalignMaker,1)   //ITS Misalign Maker
84 };
85
86
87 #endif
88