ROOT logo
AliRoot » ITS » AliITSsimulationSPD

class AliITSsimulationSPD: public AliITSsimulation

  Version: 1
  Modified by D. Elia, G.E. Bruno, H. Tydesjo
  Fast diffusion code by Bjorn S. Nilsen
  March-April 2006
  October     2007: GetCalibrationObjects() removed

  Version: 0
  Written by Boris Batyunya
  December 20 1999


 AliITSsimulationSPD is to do the simulation of SPDs.


Function Members (Methods)

public:
AliITSsimulationSPD()
AliITSsimulationSPD(AliITSDetTypeSim* dettyp)
AliITSsimulationSPD(const AliITSsimulationSPD& source)
virtual~AliITSsimulationSPD()
voidTObject::AbstractMethod(const char* method) const
voidAddNoisyPixels()
virtual Bool_tAliITSsimulation::AddSDigitsToModule(TClonesArray* pItemArray, Int_t mask)
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual voidAliITSsimulation::ClearMap()
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tTObject::Compare(const TObject* obj) const
virtual voidTObject::Copy(TObject& object) const
virtual voidAliITSsimulation::CreateFastRecPoints(AliITSmodule*, Int_t, TRandom*, TClonesArray*)
voidCreateHistograms()
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual voidDigitiseModule(AliITSmodule* mod, Int_t, Int_t)
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
voidFillHistograms(Int_t ix, Int_t iz, Double_t v = 1.0)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
virtual voidFinishSDigitiseModule()
voidFrompListToDigits()
voidGenerateStrobePhase()
virtual AliITSCalibration*AliITSsimulation::GetCalibrationModel(Int_t mod = 0)
Bool_tAliITSsimulation::GetDebug(Int_t level = 1) const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual Int_tAliITSsimulation::GetEventNumber() const
TObjArray*GetHistArray()
TString&GetHistName()
TH1F*GetHistogram(Int_t i)
virtual const char*TObject::GetIconName() const
virtual AliITSpList*AliITSsimulation::GetMap()
virtual Int_tAliITSsimulation::GetModuleNumber() const
virtual const char*TObject::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
Double_tGetTanLorAngle() const
virtual const char*TObject::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::Hash() const
voidHitToDigit(AliITSmodule* mod)
voidHitToSDigit(AliITSmodule* mod)
voidHitToSDigitFast(AliITSmodule* mod)
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidInit()
virtual voidInitSimulationModule(Int_t module, Int_t event)
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTObject::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTObject::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
AliITSsimulationSPD&operator=(const AliITSsimulationSPD& s)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTObject::Print(Option_t* option = "") const
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidRemoveDeadPixels()
voidTObject::ResetBit(UInt_t f)
voidResetHistograms()
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
virtual voidSDigitiseModule(AliITSmodule* mod, Int_t mask, Int_t event)
voidSDigitsToDigits()
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual voidAliITSsimulation::SetCalibrationModel(Int_t mod, AliITSCalibration* res)
voidAliITSsimulation::SetDebug(Int_t level = 5)
voidAliITSsimulation::SetDetType(AliITSDetTypeSim* dettyp)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
virtual voidAliITSsimulation::SetEventNumber(Int_t evnt)
voidSetHistName(TString& n)
voidSetLorentzDrift(Bool_t b = kFALSE)
virtual voidAliITSsimulation::SetMap(AliITSpList* p)
virtual voidAliITSsimulation::SetModuleNumber(Int_t mod)
voidAliITSsimulation::SetNoDebug()
static voidTObject::SetObjectStat(Bool_t stat)
voidSetStrobeGeneration(Bool_t b = kFALSE)
Bool_tSetTanLorAngle(Double_t WeightHole = 1.0)
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector&)
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
voidWriteSDigits()
protected:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidTObject::MakeZombie()

Data Members

private:
Int_tfCouplingSets the coupling to be used.
TObjArray*fHis! just in case for histogramming
Bool_tfLorentzkTRUE if Lorentz drift has been allowed
TStringfSPDname! Histogram name
Bool_tfStrobekTRUE if readout strobe with proper phase applied to select hits
Int_tfStrobeLenghtStrobe signal lenght in units of 25 ns
Double_tfStrobePhaseThe phase of the strobe signal with respect to the trigger
Double_tfTanLorAng! Tangent of the Lorentz Angle (weighted average for hole and electrons)

Class Charts

Inheritance Chart:
TObject
AliITSsimulation
AliITSsimulationSPD

Function documentation

AliITSsimulationSPD()
 Default constructor.
 Inputs:
    none.
 Outputs:
    none.
 Return:
    A default constructed AliITSsimulationSPD class.
AliITSsimulationSPD(AliITSDetTypeSim* dettyp)
 standard constructor
 Inputs:
    AliITSsegmentation *seg  A pointer to the segmentation class
                             to be used for this simulation
    AliITSCalibration     *resp A pointer to the responce class to
                             be used for this simulation
 Outputs:
    none.
 Return:
    A default constructed AliITSsimulationSPD class.
void Init()
 Initilization
 Inputs:
    none.
 Outputs:
    none.
 Return:
    none.
Bool_t SetTanLorAngle(Double_t WeightHole = 1.0)
 This function set the Tangent of the Lorentz angle.
 A weighted average is used for electrons and holes
 Input: Double_t WeightHole: wheight for hole: it should be in the range [0,1]
 output: Bool_t : kTRUE in case of success

~AliITSsimulationSPD()
 destructor
 Inputs:
    none.
 Outputs:
    none.
 Return:
     none.
AliITSsimulationSPD(const AliITSsimulationSPD& source)
     Copy Constructor
 Inputs:
    AliITSsimulationSPD &s The original class for which
                                this class is a copy of
 Outputs:
    none.
 Return:
AliITSsimulationSPD& operator=(const AliITSsimulationSPD& s)
    Assignment operator
 Inputs:
    AliITSsimulationSPD &s The original class for which
                                this class is a copy of
 Outputs:
    none.
 Return:
void InitSimulationModule(Int_t module, Int_t event)
  This function creates maps to build the list of tracks for each
  summable digit. Inputs defined by base class.
  Inputs:
    Int_t module   // Module number to be simulated
    Int_t event    // Event number to be simulated
  Outputs:
    none
  Returns:
    none
void SDigitiseModule(AliITSmodule* mod, Int_t mask, Int_t event)
  This function begins the work of creating S-Digits.  Inputs defined
  by base class.
  Inputs:
    AliITSmodule *mod  //  module
    Int_t              //  not used
    Int_t event        //  Event number
  Outputs:
    none
  Return:
    test              //  test returns kTRUE if the module contained hits
                      //  test returns kFALSE if it did not contain hits
void WriteSDigits()
  This function adds each S-Digit to pList
  Inputs:
    none.
  Outputs:
    none.
  Return:
    none
void FinishSDigitiseModule()
  This function calls SDigitsToDigits which creates Digits from SDigits
  Inputs:
    none
  Outputs:
    none
  Return
    none
void DigitiseModule(AliITSmodule* mod, Int_t , Int_t )
  This function creates Digits straight from the hits and then adds
  electronic noise to the digits before adding them to pList
  Each of the input variables is passed along to HitToSDigit
  Inputs:
    AliITSmodule *mod     module
    Int_t                 Dummy.
    Int_t                 Dummy
  Outputs:
     none.
  Return:
    none.
void HitToSDigit(AliITSmodule* mod)
 Does the charge distributions using Gaussian diffusion charge charing.
 Inputs:
    AliITSmodule *mod  Pointer to this module
 Output:
    none.
 Return:
    none.
void HitToSDigitFast(AliITSmodule* mod)
 Does the charge distributions using Gaussian diffusion charge charing.    // Inputs:
    AliITSmodule *mod  Pointer to this module
 Output:
    none.
 Return:
    none.
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)
 Spreads the charge over neighboring cells. Assume charge is distributed
 as charge(x,z) = (el/2*pi*sig*sig)*exp(-arg)
 arg=((x-x0)*(x-x0)/2*sig*sig)+((z-z0*z-z0)/2*sig*sig)
 if fLorentz=kTRUE, then x0=x0+ld (Lorentz drift taken into account)
 Defined this way, the integral over all x and z is el.
 Inputs:
    Double_t x0   x position of point where charge is liberated
    Double_t z0   z position of point where charge is liberated
    Int_t    ix0  row of cell corresponding to point x0
    Int_t    iz0  columb of cell corresponding to point z0
    Double_t el   number of electrons liberated in this step
    Double_t sig  Sigma difusion for this step (y0 dependent)
    Double_t ld   lorentz drift in x for this step (y0 dependent)
    Int_t    t    track number
    Int_t    ti   hit track index number
    Int_t    hi   hit "hit" index number
 Outputs:
     none.
 Return:
     none.
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)
 Spreads the charge over neighboring cells. Assume charge is distributed
 as charge(x,z) = (el/2*pi*sigx*sigz)*exp(-arg)
 arg=((x-x0)*(x-x0)/2*sigx*sigx)+((z-z0*z-z0)/2*sigz*sigz)
 if fLorentz=kTRUE, then x0=x0+ld (Lorentz drift taken into account)
 Defined this way, the integral over all x and z is el.
 Inputs:
    Double_t x0   x position of point where charge is liberated
    Double_t z0   z position of point where charge is liberated
    Int_t    ix0  row of cell corresponding to point x0
    Int_t    iz0  columb of cell corresponding to point z0
    Double_t el   number of electrons liberated in this step
    Double_t sigx Sigma difusion along x for this step (y0 dependent)
    Double_t sigz Sigma difusion along z for this step (y0 dependent)
    Double_t ld   lorentz drift in x for this stip (y0 dependent)
    Int_t    t    track number
    Int_t    ti   hit track index number
    Int_t    hi   hit "hit" index number
 Outputs:
     none.
 Return:
     none.
void RemoveDeadPixels()
 Removes dead pixels on each module (ladder)
 This should be called before going from sdigits to digits (FrompListToDigits)
void AddNoisyPixels()
 Adds noisy pixels on each module (ladder)
 This should be called before going from sdigits to digits (FrompListToDigits)
void FrompListToDigits()
 add noise and electronics, perform the zero suppression and add the
 digit to the list
 Inputs:
    none.
 Outputs:
    none.
 Return:
    none.
void CreateHistograms()
 create 1D histograms for tests
 Inputs:
    none.
 Outputs:
    none.
 Return:
     none.
void FillHistograms(Int_t ix, Int_t iz, Double_t v = 1.0)
 Fill the histogram
 Inputs:
    none.
 Outputs:
    none.
 Return:
     none.
void ResetHistograms()
 Reset histograms for this detector
 Inputs:
    none.
 Outputs:
    none.
 Return:
     none.
void SetCoupling(Int_t col, Int_t row)
  Take into account the coupling between adiacent pixels.
  The parameters probcol and probrow are the probability of the
  signal in one pixel shared in the two adjacent pixels along
  the column and row direction, respectively.
  Note pList is goten via GetMap() and module is not need any more.
  Otherwise it is identical to that coded by Tiziano Virgili (BSN).

/* >
.
   */
 Inputs:
    Int_t col            z cell index
    Int_t row            x cell index
 Outputs:
    none.
 Return:
     none.
void SetCouplingOld(Int_t col, Int_t row)
  Take into account the coupling between adiacent pixels.
  The parameters probcol and probrow are the fractions of the
  signal in one pixel shared in the two adjacent pixels along
  the column and row direction, respectively.

/* >
.
   */
 Inputs:
    Int_t col            z cell index
    Int_t row            x cell index
    Int_t module         module number
 Outputs:
    none.
 Return:
     none.
void GenerateStrobePhase()
 Generate randomly the strobe
 phase w.r.t to the LHC clock
 Done once per event
void SetLorentzDrift(Bool_t b = kFALSE)
 This set the Lorentz drift of Electrons and Holes: by deafult equal weights to Electrons and Holes
Double_t GetTanLorAngle() const
 Getter for the Lorentz angle
{return fTanLorAng;}
TH1F* GetHistogram(Int_t i)
{return (TH1F*)(fHis->At(i));}
TObjArray* GetHistArray()
{return fHis;}
TString& GetHistName()
{return fSPDname;}
void SetHistName(TString& n)
 For backwards compatibility
{fSPDname = n;}
void SDigitsToDigits()
void HitToDigit(AliITSmodule* mod)
 Standard interface to DigitiseModule  Inputs: AliITSmodule *mod  Pointer to this module
void SetStrobeGeneration(Bool_t b = kFALSE)
 This sets fStrobe flag and allows generating the strobe and applying it to select hits
{fStrobe=b;}
void UpdateMapSignal(Int_t ix, Int_t iz, Int_t trk, Int_t ht, Double_t signal)
  This function adds a signal to the pList from the pList class
  Inputs: iz column number  ix row number  trk track number  ht hit number  signal signal strength
void UpdateMapNoise(Int_t ix, Int_t iz, Float_t noise)
  This function adds noise to data in the MapA2 as well as the pList
  Inputs:  iz column number  ix row number  noise electronic noise generated by FrompListToDigits
AliITSsegmentation* GetSegmentationModel(Int_t )
 Get a pointer to the segmentation object
{return fDetType->GetSegmentationModel(0);}
void SetSegmentationModel(Int_t , AliITSsegmentation* seg)
 set pointer to segmentation objec
{fDetType->SetSegmentationModel(0,seg);}
Double_t GetThreshold()
 Getters for data kept in fSegmentation and fResponse.
 Returns the Threshold in electrons
void GetCouplings(Double_t& cc, Double_t& cr)
 Returns the couplings Columb and Row.
Int_t GetNPixelsX()
 Returns the number of pixels in x
{return GetSegmentationModel(0)->Npx();}
Int_t GetNPixelsZ()
 Returns the number of pixels in z
{return GetSegmentationModel(0)->Npz();}