ROOT logo
AliRoot » MUON » AliMUONDigitizerV3

class AliMUONDigitizerV3: public AliDigitizer

 \class AliMUONDigitizerV3

 The digitizer is performing the transformation to go from SDigits (digits
 w/o any electronic noise) to Digits (w/ electronic noise, and decalibration)

 The decalibration is performed by doing the reverse operation of the
 calibration, that is we do (Signal+pedestal)/gain -> ADC

 Note also that the digitizer takes care of merging sdigits that belongs
 to the same pad, either because we're merging several input sdigit files
 or with a single file because the sdigitizer does not merge sdigits itself
 (for performance reason mainly, and because anyway we know we have to do it
 here, at the digitization level).

 August 2011. In order to remove the need for specific MC OCDB storages,
 we're introducing a dependence of simulation on AliMUONRecoParam (stored
 in MUON/Calib/RecoParam in OCDB), which is normally (or conceptually, if
 you will) only a reconstruction object. That's not a pretty solution, but,
 well, we have to do it...
 This dependence comes from the fact that we must know how to decalibrate
 the digits, so that the decalibration (done here) - calibration (done during
 reco) process is (as much as possible) neutral.


 \author Laurent Aphecetche


Function Members (Methods)

public:
AliMUONDigitizerV3(AliDigitizationInput* digInput = 0, Int_t generateNoisyDigits = 1)
virtual~AliMUONDigitizerV3()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTNamed::Clear(Option_t* option = "")
virtual TObject*TNamed::Clone(const char* newname = "") const
virtual Int_tTNamed::Compare(const TObject* obj) const
static Int_tDecalibrateTrackerDigit(const AliMUONVCalibParam& pedestals, const AliMUONVCalibParam* gains, Int_t channel, Float_t charge, Bool_t addNoise = kFALSE, Bool_t noiseOnly = kFALSE, const TString& calibrationMode = "NOGAIN")
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual voidDigitize(Option_t* opt = "")
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
virtual voidTNamed::FillBuffer(char*& buffer)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual const char*TObject::GetIconName() const
virtual const char*TNamed::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
Bool_tAliDigitizer::GetRegionOfInterest() const
virtual const char*TNamed::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTNamed::Hash() const
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 Bool_tInit()
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_tTNamed::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTNamed::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)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTNamed::Print(Option_t* option = "") const
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
voidSetCalibrationData(AliMUONCalibrationData* calibrationData, AliMUONRecoParam* recoParam)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
virtual voidTNamed::SetName(const char* name)MENU
virtual voidTNamed::SetNameTitle(const char* name, const char* title)
static voidSetNSigmas(Double_t nsigmas = 4.0)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidTNamed::SetTitle(const char* title = "")MENU
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector&)
virtual Int_tTNamed::Sizeof() const
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
protected:
virtual voidAliDigitizer::Copy(TObject& dig) const
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
Int_tAliDigitizer::GetNInputStreams() const
voidTObject::MakeZombie()

Data Members

protected:
AliDigitizationInput*AliDigitizer::fDigInput! Pointer to the Digitizer input
TStringTNamed::fNameobject identifier
TStringTNamed::fTitleobject title
private:
AliMUONCalibrationData*fCalibrationData!< pointer to access calib parameters
AliMUONVDigitStore*fDigitStore!< temporary digits
TArrayIfEfficiencyResponse!< Local board efficiency response
Int_tfGenerateNoisyDigits!< whether or not we should generate noise-only digits for tracker (1) and trigger (2)
TObjArray*fInputDigitStores!< input digit stores (one per input file
Bool_tfIsInitialized/< are we initialized ?
AliMUONLogger*fLogger!< to keep track of messages
TF1*fNoiseFunctionTrig!< function to get noise disribution on trig. chambers
AliMUONVDigitStore*fOutputDigitStore!< digits we'll output to disk
AliMUONRecoParam*fRecoParam!< reco params (to know how to decalibrate) (not owner)
AliMUONTriggerChamberEfficiency*fTriggerEfficiency!< trigger efficiency map
AliMUONTriggerElectronics*fTriggerProcessor/< pointer to the trigger part of the job
AliMUONVTriggerStore*fTriggerStore!< trigger objects
AliMUONTriggerUtilities*fTriggerUtilities!< Trigger utilities for masks
static Double_tfgNSigmas/< \brief number of sigmas above ped to use

Class Charts

Inheritance Chart:
TNamed
AliDigitizer
AliMUONDigitizerV3

Function documentation

AliMUONDigitizerV3(AliDigitizationInput* digInput = 0, Int_t generateNoisyDigits = 1)
 Ctor.
~AliMUONDigitizerV3()
 Dtor. Note we're the owner of some pointers.
ApplyResponseToTrackerDigit(AliMUONVDigit& digit, Bool_t addNoise)
 For tracking digits, starting from an ideal digit's charge, we :

 - "divide" by a gain (thus decalibrating the digit)
 - add a pedestal (thus decalibrating the digit)
 - add some electronics noise (thus leading to a realistic adc), if requested to do so
 - sets the signal to zero if below 3*sigma of the noise
ApplyResponseToTriggerDigit(AliMUONVDigit& digit)
 For trigger digits, starting from an ideal digit, we :

 - apply efficiency (on demand)
 - apply trigger masks
ApplyResponse(const AliMUONVDigitStore& store, AliMUONVDigitStore& filteredStore)
 Loop over all chamber digits, and apply the response to them
 Note that this method may remove digits.
DecalibrateTrackerDigit(const AliMUONVCalibParam& pedestals, const AliMUONVCalibParam* gains, Int_t channel, Float_t charge, Bool_t addNoise = kFALSE, Bool_t noiseOnly = kFALSE, const TString& calibrationMode = "NOGAIN")
 Decalibrate (i.e. go from charge to adc) a tracker digit, given its
 pedestal and gain parameters.
 Must insure before calling that channel is valid (i.e. between 0 and
 pedestals or gains->GetSize()-1, but also corresponding to a valid channel
 otherwise results are not predictible...)

 This method is completely tied to what happens in its sister method :
 AliMUONDigitCalibrator::CalibrateDigit, which is doing the reverse work...

CreateInputDigitStores()
 Create input digit stores

Digitize(Option_t* opt = "")
 Main method.
 We first loop over input files, and merge the sdigits we found there.
 Second, we digitize all the resulting sdigits
 Then we generate noise-only digits (for tracker only)
 And we finally generate the trigger outputs.
GenerateNoisyDigits(AliMUONVDigitStore& digitStore)
 According to a given probability, generate digits that
 have a signal above the noise cut (ped+n*sigma_ped), i.e. digits
 that are "only noise".
GenerateNoisyDigitsForOneCathode(AliMUONVDigitStore& digitStore, Int_t detElemId, Int_t cathode)
 Generate noise-only digits for one cathode of one detection element.
 Called by GenerateNoisyDigits()
GenerateNoisyDigitsForTrigger(AliMUONVDigitStore& digitStore)
 Generate noise-only digits for one cathode of one detection element.
 Called by GenerateNoisyDigits()
GetLoader(const TString& foldername)
 Get a MUON loader
Init()
 Initialization of the digitization :
 a) create the calibrationData, according to run number
 b) create the trigger processing task
Int_t GetArrayIndex(Int_t cathode, Int_t trigCh, Int_t localCircuit)
 Get index of array with trigger status map or efficiency
MergeWithSDigits(AliMUONVDigitStore*& digitStore, const AliMUONVDigitStore& input, Int_t mask)
 Merge the sdigits in inputData with the digits already present in outputData
NoiseFunction()
 Return noise function
void SetCalibrationData(AliMUONCalibrationData* calibrationData, AliMUONRecoParam* recoParam)
AliMUONDigitizerV3(AliDigitizationInput* digInput = 0, Int_t generateNoisyDigits = 1)
void SetNSigmas(Double_t nsigmas = 4.0)
 Set the number of sigmas for pedestal cut
{ fgNSigmas = nsigmas; }
AliMUONDigitizerV3& operator=(const AliMUONDigitizerV3& other)
 Not implemented
void BuildTriggerStatusMap()