For Pythia with tune don't switch off MI in ConfigHeavyFlavor
[u/mrichter/AliRoot.git] / ITS / AliITSsegmentation.h
CommitLineData
b0f5e3fc 1#ifndef ALIITSSEGMENTATION_H
2#define ALIITSSEGMENTATION_H
3
b0f5e3fc 4#include <TObject.h>
f6b6d58e 5#include "AliLog.h"
6#include "AliITSgeom.h"
b0f5e3fc 7
c9649d1e 8/* $Id$ */
214b9c8f 9
b0f5e3fc 10//----------------------------------------------
214b9c8f 11// -
12// ITS segmentation virtual base class -
13// -
14//----------------------------------------------
15class TF1;
b0f5e3fc 16class AliITSsegmentation :
17public TObject {
18 public:
55d2c544 19 AliITSsegmentation();
20 AliITSsegmentation(const AliITSsegmentation& source);
21 virtual ~AliITSsegmentation();
22 AliITSsegmentation& operator=(const AliITSsegmentation &source);
b0f5e3fc 23 // Set Detector Segmentation Parameters
24 //
25 // Detector size
55d2c544 26 virtual void SetDetSize(Float_t p1,Float_t p2,Float_t p3)
27 {fDx=p1; fDz=p2; fDy=p3;}
b0f5e3fc 28 // Cell size
55d2c544 29 virtual void SetPadSize(Float_t,Float_t) {MayNotUse("SetPadSize");}
b0f5e3fc 30 // Maximum number of cells along the two coordinates
55d2c544 31 virtual void SetNPads(Int_t,Int_t) = 0;
5752a110 32 // Returns the maximum number of cells (digits) posible
55d2c544 33 virtual Int_t GetNPads() const = 0;
a244dbf6 34 // Set layer
55d2c544 35 virtual void SetLayer(Int_t) {MayNotUse("SetLayer");}
d24bc9d6 36 // Number of Chips
37 virtual Int_t GetNumberOfChips() const {MayNotUse("GetNumberOfChips"); return 0;}
23197852 38 virtual Int_t GetMaximumChipIndex() const {MayNotUse("GetNumberOfChips"); return 0;}
d24bc9d6 39 // Chip number from local coordinates
40 virtual Int_t GetChipFromLocal(Float_t, Float_t) const {MayNotUse("GetChipFromLocal"); return 0;}
23197852 41 virtual Int_t GetChipsInLocalWindow(Int_t* /*array*/, Float_t /*zmin*/, Float_t /*zmax*/, Float_t /*xmin*/, Float_t /*xmax*/) const {MayNotUse("GetChipsInLocalWindow"); return 0;}
d24bc9d6 42 // Chip number from channel number
43 virtual Int_t GetChipFromChannel(Int_t, Int_t) const {MayNotUse("GetChipFromChannel"); return 0;}
44
b0f5e3fc 45 // Transform from real to cell coordinates
55d2c544 46 virtual void GetPadIxz(Float_t,Float_t,Int_t &,Int_t &) const = 0;
b0f5e3fc 47 // Transform from cell to real coordinates
55d2c544 48 virtual void GetPadCxz(Int_t,Int_t,Float_t &,Float_t &) const = 0;
d24bc9d6 49 // Local transformation of real local coordinates -
50 virtual void GetPadTxz(Float_t &,Float_t &) const = 0;
51 // Transformation from Geant cm detector center local coordinates
52 // to detector segmentation/cell coordiantes starting from (0,0).
53 virtual Bool_t LocalToDet(Float_t,Float_t,Int_t &,Int_t &) const = 0;
54 // Transformation from detector segmentation/cell coordiantes starting
55 // from (0,0) to Geant cm detector center local coordinates.
56 virtual void DetToLocal(Int_t,Int_t,Float_t &,Float_t &) const = 0;
f6b6d58e 57
b0f5e3fc 58 // Transform from real global to local coordinates
d24bc9d6 59 void GetLocal(Int_t module,Float_t *g ,Float_t *l, AliITSgeom *geom) const {
214b9c8f 60 if(geom) geom->GtoL(module,g,l);
61 else AliFatal("Pointer to ITS geometry class (AliITSgeom) is null\n");
f6b6d58e 62 }
b0f5e3fc 63 // Transform from real local to global coordinates
d24bc9d6 64 void GetGlobal(Int_t module,Float_t *l ,Float_t *g, AliITSgeom *geom) const {
214b9c8f 65 if(geom) geom->LtoG(module,l,g);
66 else AliFatal("Pointer to ITS geometry class (AliITSgeom) is null\n");
f6b6d58e 67 }
d24bc9d6 68
b0f5e3fc 69 // Initialisation
55d2c544 70 virtual void Init() = 0;
b0f5e3fc 71 //
72 // Get member data
73 //
b0f5e3fc 74 // Detector length
55d2c544 75 virtual Float_t Dx() const {return fDx;}
b0f5e3fc 76 // Detector width
55d2c544 77 virtual Float_t Dz() const {return fDz;}
b0f5e3fc 78 // Detector thickness
a3da6340 79 virtual Float_t Dy() const {return fDy;}
b0f5e3fc 80 // Cell size in x
55d2c544 81 virtual Float_t Dpx(Int_t) const = 0;
b0f5e3fc 82 // Cell size in z
55d2c544 83 virtual Float_t Dpz(Int_t) const = 0;
b0f5e3fc 84 // Maximum number of Cells in x
55d2c544 85 virtual Int_t Npx() const = 0;
b0f5e3fc 86 // Maximum number of Cells in z
55d2c544 87 virtual Int_t Npz() const = 0;
a244dbf6 88 // Layer
55d2c544 89 virtual Int_t GetLayer() const {MayNotUse("GetLayer"); return 0;}
b0f5e3fc 90 // Set hit position
55d2c544 91 // virtual void SetHit(Float_t, Float_t) {}
92 // angles
93 virtual void Angles(Float_t& /* p */, Float_t& /* n */) const
94 {MayNotUse("Angles");}
95
b0f5e3fc 96 //
97 // Get next neighbours
55d2c544 98 virtual void Neighbours(Int_t,Int_t,Int_t*,Int_t[10],Int_t[10]) const
99 {MayNotUse("Neighbours");}
100
b0f5e3fc 101 // Function for systematic corrections
102 // Set the correction function
55d2c544 103 virtual void SetCorrFunc(TF1* fc) {fCorr = fc;}
b0f5e3fc 104 // Get the correction Function
55d2c544 105 virtual TF1* CorrFunc() {return fCorr;}
106 // Print Default parameters
107 virtual void PrintDefaultParameters() const = 0;
108
109 protected:
110
111 virtual void Copy(TObject &obj) const;
112
113 Float_t fDx; //SPD: Full width of the detector (x axis)- microns
114 //SDD: Drift distance of the 1/2detector (x axis)-microns
115 //SSD: Full length of the detector (x axis)- microns
116 Float_t fDz; //SPD: Full length of the detector (z axis)- microns
c9649d1e 117 //SDD: Full Length of the detector (z axis) - microns
55d2c544 118 //SSD: Full width of the detector (z axis)- microns
119 Float_t fDy; //SPD: Full thickness of the detector (y axis) -um
120 //SDD: Full thickness of the detector (y axis) - microns
121 //SSD: Full thickness of the detector (y axis) -um
55d2c544 122 TF1* fCorr; // correction function
123
124 ClassDef(AliITSsegmentation,2) //Segmentation virtual base class
b0f5e3fc 125};
b0f5e3fc 126#endif