]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/UPGRADE/AliITSUSimulationPix.h
1) Params for each sensor type gets can be configured individually
[u/mrichter/AliRoot.git] / ITS / UPGRADE / AliITSUSimulationPix.h
CommitLineData
451f5018 1#ifndef ALIITSUSIMULATIONPIX_H
2#define ALIITSUSIMULATIONPIX_H
3
4/* Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *
5* See cxx source for full Copyright notice */
6
7////////////////////////////////////////////////////////////
8// Simulation class for upgrade pixels //
9////////////////////////////////////////////////////////////
10
4fa9d550 11#include <TObjArray.h>
451f5018 12#include "AliITSUSimulation.h"
13#include "AliITSUSegmentationPix.h"
14
15class TH1F;
16class AliITSUModule;
17class AliITSUSimuParam;
29ad4146 18class AliITSUParamList;
19class TH2;
451f5018 20
21//-------------------------------------------------------------------
22
23class AliITSUSimulationPix : public AliITSUSimulation {
24public:
c92b1537 25 enum {kCellX1,kCellX2,kCellZ1,kCellZ2,kCellYDepth,kNDtSpread}; // data used for ch. spread integral calc.
26 //
27 // charge spread functions defined
69e0f089 28 enum {kSpreadFunGauss2D, // single gaussian in 2D, SpreadFunGauss2D
29 kSpreadFunDoubleGauss2D, // double gaussian in 2D, SpreadFunDoubleGauss2D
29ad4146 30 kSpreadFunHisto, // use 2D histo from the object stored in fResponseParam
c92b1537 31 kNSpreadFuns
32 };
29ad4146 33 // These are enums for interpretation of the entries in the AliITSUParamList*fResponseParam :
34 // object to holding the sensor-specific response data
35 // fist kParamStart entries of spread fun params are reserved for common parameters
36 enum {kChargeSpreadType, // charge spread function type, one of kNSpreadFuns types
37 kSpreadFunParamNXoffs, // number of pixels to consider +- from injection point (in X)
c92b1537 38 kSpreadFunParamNZoffs, // number of pixels to consider +- from injection point (in Z)
29ad4146 39 kSpreadFunMinSteps, // the single hit charge is divided into kSpreadFunMinSteps (minimum is 3)
40 kReadOutSchemeType, // readout type strobe, rolling shutter etc
0ebc85cf 41 kReadOutCycleLength, // full readout cycle window
29ad4146 42 kSpreadFunGlobalQScale, // Global charge scaling factor to match tes beam results to simu (Geant3)
43 kPixSNDisrcCut, // S/N cut applied at discrimination level
44 kPixMinElToAdd, // Min number of electrons to add to sdig
45 kPixNoiseIsOn, // Turn Pixel Noise on
46 kPixNoiseInAllMod, // To apply pixel noise in all modules, if not only on ones where there is a hit
47 kPixNoiseMPV, // Pixel noise MPV
48 kPixNoiseSigma, // Pixel noise sigma
49 kPixFakeRate, // Pixel fake rate
50 //
51 kNReservedParams=20, // some reserved slots
52 kParamStart = kNReservedParams // user parameters must start from this slot
c92b1537 53 };
0ebc85cf 54 //
55 // defined readout types:
56 enum {kReadOutStrobe, // hits in static time window fReadOutCycleLength wrt offset fReadOOutCycleOffset (global for sensor) are seen
29ad4146 57 kReadOutRollingShutter, // hits in rolling (row-wise) window are seen (see IsHitInReadOutWindowRollingShutter)
0ebc85cf 58 kNReadOutTypes};
69e0f089 59 // elements of the SpreadFunGauss2D parameterization (offsetted by kParamStart)
60 enum {kG1MeanX=kParamStart,kG1SigX,kG1MeanZ,kG1SigZ,kNG1Par};
61 // elements of the SpreadFunDoubleGauss2D parameterization (offsetted by kParamStart)
62 enum {kG2MeanX0=kParamStart,kG2SigX0,kG2MeanZ0,kG2SigZ0,kG2MeanX1,kG2SigX1,kG2MeanZ1,kG2SigZ1,kG2ScaleG2,kNG2Par};
c92b1537 63 //
451f5018 64 AliITSUSimulationPix();
65 AliITSUSimulationPix(AliITSUSimuParam* sim,AliITSUSensMap* map);
66 virtual ~AliITSUSimulationPix();
67 AliITSUSimulationPix(const AliITSUSimulationPix &source);
68 AliITSUSimulationPix& operator=(const AliITSUSimulationPix &s);
69 void Init();
70 //
71 void FinishSDigitiseModule();
c92b1537 72 void DigitiseModule();
451f5018 73 //
c92b1537 74 void SDigitiseModule();
451f5018 75 void WriteSDigits();
c92b1537 76 void Hits2SDigits();
77 void Hits2SDigitsFast();
451f5018 78 void AddNoisyPixels();
79 void RemoveDeadPixels();
80 void FrompListToDigits();
81 Int_t CreateNoisyDigits(Int_t minID,Int_t maxID,double probNoisy, double noise, double base);
82 Bool_t SetTanLorAngle(Double_t WeightHole=1.0);
83 Double_t GetTanLorAngle() const {return fTanLorAng;};
84 //
85 // For backwards compatibility
86 void SDigitsToDigits(){ FinishSDigitiseModule();}
87
0ebc85cf 88 virtual void GenerateReadOutCycleOffset();
c92b1537 89 //
90 Double_t SpreadFunDoubleGauss2D(const Double_t *dtIn);
91 Double_t SpreadFunGauss2D(const Double_t *dtIn);
29ad4146 92 Double_t SpreadFrom2DHisto(const Double_t *dtIn);
c92b1537 93 //
29ad4146 94 virtual void SetResponseParam(AliITSUParamList* resp);
451f5018 95 //
0ebc85cf 96 Bool_t IsHitInReadOutWindow(Int_t row, Int_t col, Double_t hitTime);
29ad4146 97 Bool_t IsHitInReadOutWindowRollingShutter(Int_t row, Int_t col, Double_t hitTime);
98 //
99 void CalcDiodeShiftInPixel(Int_t xlin, Int_t zcol, Float_t &x, Float_t &z);
0ebc85cf 100 //
451f5018 101 private:
c92b1537 102 void SpreadCharge2D(Double_t x0,Double_t z0, Double_t dy, Int_t ix0,Int_t iz0,
103 Double_t el, Int_t tID, Int_t hID);
451f5018 104 //
105 void SetCoupling(AliITSUSDigit* old,Int_t ntrack,Int_t idhit); // "New" coupling routine Tiziano Virgili
106 void SetCouplingOld(AliITSUSDigit* old,Int_t ntrack,Int_t idhit); // "Old" coupling routine Rocco Caliandro
107 //
108 protected:
0ebc85cf 109 Double_t fTanLorAng; //! Tangent of the Lorentz Angle (weighted average for hole and electrons)
110 Double_t fReadOutCycleLength; // readout cycle lenght in s
111 Double_t fReadOutCycleOffset; // The phase of the RO with respect to the trigger
29ad4146 112 Double_t fGlobalChargeScale; // Charge scaling to match Geant and Test beam
c92b1537 113 //
29ad4146 114 TH2* fSpread2DHisto; //! optional 2D histo for charge spread parameterization
c92b1537 115 Double_t (AliITSUSimulationPix::*fSpreadFun)(const Double_t *dtIn); //! pointer on current spread function
0ebc85cf 116 Bool_t (AliITSUSimulationPix::*fROTimeFun)(Int_t row,Int_t col, Double_t hitTime); //! pointer on current R/O time check function
c92b1537 117
451f5018 118 ClassDef(AliITSUSimulationPix,1) // Simulation of pixel clusters
119 };
120#endif