]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/UPGRADE/AliITSUSimulationPix.h
clusterizer,reconstructor + many fixes (Magnus,Stefan)
[u/mrichter/AliRoot.git] / ITS / UPGRADE / AliITSUSimulationPix.h
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
11 #include <TObjArray.h>
12 #include "AliITSUSimulation.h"
13 #include "AliITSUSegmentationPix.h"
14
15 class TH1F;
16 class AliITSUModule;
17 class AliITSUSimuParam;
18
19 //-------------------------------------------------------------------
20
21 class AliITSUSimulationPix : public AliITSUSimulation {
22 public:
23   AliITSUSimulationPix();
24   AliITSUSimulationPix(AliITSUSimuParam* sim,AliITSUSensMap* map);
25   virtual ~AliITSUSimulationPix();
26   AliITSUSimulationPix(const AliITSUSimulationPix &source); 
27   AliITSUSimulationPix& operator=(const AliITSUSimulationPix &s);
28   void Init();
29   //
30   void FinishSDigitiseModule();
31   void DigitiseModule(AliITSUModule *mod,Int_t mask, Int_t event, AliITSsegmentation* seg);
32   //
33   void SDigitiseModule(AliITSUModule *mod, Int_t mask, Int_t event, AliITSsegmentation* seg);
34   void WriteSDigits();
35   void Hits2SDigits(AliITSUModule *mod);
36   void Hits2SDigitsFast(AliITSUModule *mod);
37   void AddNoisyPixels();   
38   void RemoveDeadPixels();
39   void FrompListToDigits();
40   Int_t CreateNoisyDigits(Int_t minID,Int_t maxID,double probNoisy, double noise, double base);
41   Bool_t SetTanLorAngle(Double_t WeightHole=1.0);
42   Double_t GetTanLorAngle() const {return fTanLorAng;};
43   //
44   // For backwards compatibility
45   void SDigitsToDigits(){ FinishSDigitiseModule();}
46   
47   // This sets fStrobe flag and allows generating the strobe and applying it to select hits 
48   void SetStrobeGeneration(Bool_t b=kFALSE) {fStrobe=b;};
49   void GenerateStrobePhase();
50   //
51   
52  private:
53   void SpreadCharge(Double_t x0,Double_t z0,Int_t ix0,Int_t iz0,Double_t el,Double_t sig,Double_t ld,Int_t t,Int_t hi);
54   void SpreadChargeAsym(Double_t x0,Double_t z0,Int_t ix0,Int_t iz0,Double_t el,Double_t sigx,Double_t sigz,Double_t ld,Int_t t,Int_t hi);
55   //
56   void SetCoupling(AliITSUSDigit* old,Int_t ntrack,Int_t idhit);     // "New" coupling routine  Tiziano Virgili
57   void SetCouplingOld(AliITSUSDigit* old,Int_t ntrack,Int_t idhit);  // "Old" coupling routine  Rocco Caliandro
58   //   
59  protected:
60    Double_t      fTanLorAng;    //! Tangent of the Lorentz Angle (weighted average for hole and electrons)
61    Bool_t        fStrobe;       // kTRUE if readout strobe with proper phase applied to select hits
62    Int_t         fStrobeLenght; // Strobe signal lenght in units of 25 ns
63    Double_t      fStrobePhase;  // The phase of the strobe signal with respect to the trigger
64    ClassDef(AliITSUSimulationPix,1)  // Simulation of pixel clusters
65  };
66 #endif