\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
AliMUONDigitizerV3(AliDigitizationInput* digInput = 0, Int_t generateNoisyDigits = 1) | |
virtual | ~AliMUONDigitizerV3() |
void | TObject::AbstractMethod(const char* method) const |
virtual void | TObject::AppendPad(Option_t* option = "") |
virtual void | TObject::Browse(TBrowser* b) |
static TClass* | Class() |
virtual const char* | TObject::ClassName() const |
virtual void | TNamed::Clear(Option_t* option = "") |
virtual TObject* | TNamed::Clone(const char* newname = "") const |
virtual Int_t | TNamed::Compare(const TObject* obj) const |
static Int_t | 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") |
virtual void | TObject::Delete(Option_t* option = "")MENU |
virtual void | Digitize(Option_t* opt = "") |
virtual Int_t | TObject::DistancetoPrimitive(Int_t px, Int_t py) |
virtual void | TObject::Draw(Option_t* option = "") |
virtual void | TObject::DrawClass() constMENU |
virtual TObject* | TObject::DrawClone(Option_t* option = "") constMENU |
virtual void | TObject::Dump() constMENU |
virtual void | TObject::Error(const char* method, const char* msgfmt) const |
virtual void | TObject::Execute(const char* method, const char* params, Int_t* error = 0) |
virtual void | TObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0) |
virtual void | TObject::ExecuteEvent(Int_t event, Int_t px, Int_t py) |
virtual void | TObject::Fatal(const char* method, const char* msgfmt) const |
virtual void | TNamed::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_t | TObject::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_t | TObject::GetObjectStat() |
virtual Option_t* | TObject::GetOption() const |
Bool_t | AliDigitizer::GetRegionOfInterest() const |
virtual const char* | TNamed::GetTitle() const |
virtual UInt_t | TObject::GetUniqueID() const |
virtual Bool_t | TObject::HandleTimer(TTimer* timer) |
virtual ULong_t | TNamed::Hash() const |
virtual void | TObject::Info(const char* method, const char* msgfmt) const |
virtual Bool_t | TObject::InheritsFrom(const char* classname) const |
virtual Bool_t | TObject::InheritsFrom(const TClass* cl) const |
virtual Bool_t | Init() |
virtual void | TObject::Inspect() constMENU |
void | TObject::InvertBit(UInt_t f) |
virtual TClass* | IsA() const |
virtual Bool_t | TObject::IsEqual(const TObject* obj) const |
virtual Bool_t | TObject::IsFolder() const |
Bool_t | TObject::IsOnHeap() const |
virtual Bool_t | TNamed::IsSortable() const |
Bool_t | TObject::IsZombie() const |
virtual void | TNamed::ls(Option_t* option = "") const |
void | TObject::MayNotUse(const char* method) const |
virtual Bool_t | TObject::Notify() |
void | TObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const |
static void | TObject::operator delete(void* ptr) |
static void | TObject::operator delete(void* ptr, void* vp) |
static void | TObject::operator delete[](void* ptr) |
static void | TObject::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 void | TObject::Paint(Option_t* option = "") |
virtual void | TObject::Pop() |
virtual void | TNamed::Print(Option_t* option = "") const |
virtual Int_t | TObject::Read(const char* name) |
virtual void | TObject::RecursiveRemove(TObject* obj) |
void | TObject::ResetBit(UInt_t f) |
virtual void | TObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU |
virtual void | TObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "") |
void | TObject::SetBit(UInt_t f) |
void | TObject::SetBit(UInt_t f, Bool_t set) |
void | SetCalibrationData(AliMUONCalibrationData* calibrationData, AliMUONRecoParam* recoParam) |
virtual void | TObject::SetDrawOption(Option_t* option = "")MENU |
static void | TObject::SetDtorOnly(void* obj) |
virtual void | TNamed::SetName(const char* name)MENU |
virtual void | TNamed::SetNameTitle(const char* name, const char* title) |
static void | SetNSigmas(Double_t nsigmas = 4.0) |
static void | TObject::SetObjectStat(Bool_t stat) |
virtual void | TNamed::SetTitle(const char* title = "")MENU |
virtual void | TObject::SetUniqueID(UInt_t uid) |
virtual void | ShowMembers(TMemberInspector&) |
virtual Int_t | TNamed::Sizeof() const |
virtual void | Streamer(TBuffer&) |
void | StreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b) |
virtual void | TObject::SysError(const char* method, const char* msgfmt) const |
Bool_t | TObject::TestBit(UInt_t f) const |
Int_t | TObject::TestBits(UInt_t f) const |
virtual void | TObject::UseCurrentStyle() |
virtual void | TObject::Warning(const char* method, const char* msgfmt) const |
virtual Int_t | TObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) |
virtual Int_t | TObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const |
virtual void | AliDigitizer::Copy(TObject& dig) const |
virtual void | TObject::DoError(int level, const char* location, const char* fmt, va_list va) const |
Int_t | AliDigitizer::GetNInputStreams() const |
void | TObject::MakeZombie() |
AliMUONDigitizerV3(const AliMUONDigitizerV3& other) | |
void | ApplyResponse(const AliMUONVDigitStore& store, AliMUONVDigitStore& filteredStore) |
void | ApplyResponseToTrackerDigit(AliMUONVDigit& digit, Bool_t addNoise) |
void | ApplyResponseToTriggerDigit(AliMUONVDigit& digit) |
void | BuildTriggerStatusMap() |
void | CreateInputDigitStores() |
void | GenerateNoisyDigits(AliMUONVDigitStore& digitStore) |
void | GenerateNoisyDigitsForOneCathode(AliMUONVDigitStore& digitStore, Int_t detElemId, Int_t cathode) |
void | GenerateNoisyDigitsForTrigger(AliMUONVDigitStore& digitStore) |
Int_t | GetArrayIndex(Int_t cathode, Int_t trigCh, Int_t localCircuit) |
AliLoader* | GetLoader(const TString& foldername) |
void | MergeWithSDigits(AliMUONVDigitStore*& digitStore, const AliMUONVDigitStore& input, Int_t mask) |
static TF1* | NoiseFunction() |
AliMUONDigitizerV3& | operator=(const AliMUONDigitizerV3& other) |
enum TObject::EStatusBits { | kCanDelete | |
kMustCleanup | ||
kObjInCanvas | ||
kIsReferenced | ||
kHasUUID | ||
kCannotPick | ||
kNoContextMenu | ||
kInvalidObject | ||
}; | ||
enum TObject::[unnamed] { | kIsOnHeap | |
kNotDeleted | ||
kZombie | ||
kBitMask | ||
kSingleKey | ||
kOverwrite | ||
kWriteDelete | ||
}; |
AliDigitizationInput* | AliDigitizer::fDigInput | ! Pointer to the Digitizer input |
TString | TNamed::fName | object identifier |
TString | TNamed::fTitle | object title |
AliMUONCalibrationData* | fCalibrationData | !< pointer to access calib parameters |
AliMUONVDigitStore* | fDigitStore | !< temporary digits |
TArrayI | fEfficiencyResponse | !< Local board efficiency response |
Int_t | fGenerateNoisyDigits | !< 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_t | fIsInitialized | /< 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_t | fgNSigmas | /< \brief number of sigmas above ped to use |
Inheritance Chart: | ||||||||||||
|
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
For trigger digits, starting from an ideal digit, we : - apply efficiency (on demand) - apply trigger masks
Loop over all chamber digits, and apply the response to them Note that this method may remove digits.
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...
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.
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".
Generate noise-only digits for one cathode of one detection element. Called by GenerateNoisyDigits()
Generate noise-only digits for one cathode of one detection element. Called by GenerateNoisyDigits()
Initialization of the digitization : a) create the calibrationData, according to run number b) create the trigger processing task
Get index of array with trigger status map or efficiency
Merge the sdigits in inputData with the digits already present in outputData
Set the number of sigmas for pedestal cut
{ fgNSigmas = nsigmas; }