This is a class that constructs AliFMDRecPoint objects from of Digits This class reads either digits from a TClonesArray or raw data from a DDL file (or similar), and stores the read ADC counts in an internal cache (fAdcs). The rec-points are made via the naiive method. -- Authors: Evgeny Karpechev(INR) and Alla Maevsksia Latest changes by Christian Holm Christensen <cholm@nbi.dk> * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * * * Author: The ALICE Off-line Project. * * Contributors are mentioned in the code where appropriate. * * * * Permission to use, copy, modify and distribute this software and its * * documentation strictly for non-commercial purposes is hereby granted * * without fee, provided that the above copyright notice appears in all * * copies and that both the copyright notice and this permission notice * * appear in the supporting documentation. The authors make no claims * * about the suitability of this software for any purpose. It is * * provided "as is" without express or implied warranty. * Id * @file AliFMDReconstructor.cxx * @author Christian Holm Christensen <cholm@nbi.dk> * @date Mon Mar 27 12:47:09 2006 * @brief FMD reconstruction
AliFMDReconstructor() | |
virtual | ~AliFMDReconstructor() |
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 | TObject::Clear(Option_t* = "") |
virtual TObject* | TObject::Clone(const char* newname = "") const |
virtual Int_t | TObject::Compare(const TObject* obj) const |
virtual void | ConvertDigits(AliRawReader* reader, TTree* digitsTree) const |
virtual void | TObject::Copy(TObject& object) const |
virtual AliTrackleter* | AliReconstructor::CreateMultFinder() const |
virtual AliTracker* | AliReconstructor::CreateTracker() const |
virtual AliTracker* | AliReconstructor::CreateTrackleter() const |
virtual AliVertexer* | AliReconstructor::CreateVertexer() const |
virtual void | TObject::Delete(Option_t* option = "")MENU |
virtual void | Digitize(AliRawReader* reader, TClonesArray* sdigits) const |
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 | FillESD(TTree* digitsTree, TTree* clusterTree, AliESDEvent* esd) const |
virtual void | FillESD(AliRawReader*, TTree* clusterTree, AliESDEvent* esd) const |
virtual void | AliReconstructor::FillEventTimeWithTOF(AliESDEvent*, AliESDpid*) |
virtual TObject* | TObject::FindObject(const char* name) const |
virtual TObject* | TObject::FindObject(const TObject* obj) const |
virtual void | AliReconstructor::FinishEvent() |
virtual const char* | AliReconstructor::GetDetectorName() const |
virtual Option_t* | TObject::GetDrawOption() const |
static Long_t | TObject::GetDtorOnly() |
AliESDFMD* | GetESDObject() const |
const AliEventInfo* | AliReconstructor::GetEventInfo() const |
AliESDEvent* | AliReconstructor::GetHLTESD() const |
virtual const char* | TObject::GetIconName() const |
virtual const char* | TObject::GetName() const |
virtual char* | TObject::GetObjectInfo(Int_t px, Int_t py) const |
static Bool_t | TObject::GetObjectStat() |
virtual Option_t* | AliReconstructor::GetOption() const |
virtual void | AliReconstructor::GetPidSettings(AliESDpid* esdPID) |
static const AliDetectorRecoParam* | AliReconstructor::GetRecoParam(Int_t iDet) |
const AliRunInfo* | AliReconstructor::GetRunInfo() const |
virtual const char* | TObject::GetTitle() const |
virtual UInt_t | TObject::GetUniqueID() const |
virtual Bool_t | TObject::HandleTimer(TTimer* timer) |
virtual Bool_t | HasDigitConversion() const |
virtual ULong_t | TObject::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 void | 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 | TObject::IsSortable() const |
Bool_t | TObject::IsZombie() const |
virtual void | TObject::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 | TObject::Print(Option_t* option = "") const |
virtual void | ProcessDigits(TClonesArray* digits, const AliFMDRawReader& rawRead) const |
virtual Int_t | TObject::Read(const char* name) |
virtual void | Reconstruct(AliFMDRawReader& reader) const |
virtual void | Reconstruct(TTree* digitsTree, TTree* clusterTree) const |
virtual void | Reconstruct(AliRawReader*, TTree*) const |
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 = "") |
virtual void | SetAngleCorrect(Bool_t use = kTRUE) |
void | TObject::SetBit(UInt_t f) |
void | TObject::SetBit(UInt_t f, Bool_t set) |
void | SetDiagnose(Bool_t use = kTRUE) |
virtual void | TObject::SetDrawOption(Option_t* option = "")MENU |
static void | TObject::SetDtorOnly(void* obj) |
virtual void | SetESD(AliESDEvent* esd) |
void | AliReconstructor::SetEventInfo(AliEventInfo* evInfo) |
void | AliReconstructor::SetHLTESD(AliESDEvent* hltesd) |
virtual void | SetNoiseFactor(Float_t f = 3) |
static void | TObject::SetObjectStat(Bool_t stat) |
void | AliReconstructor::SetOption(Option_t* option) |
void | AliReconstructor::SetRecoParam(const AliDetectorRecoParam* par) |
void | AliReconstructor::SetRunInfo(AliRunInfo* runInfo) |
virtual void | TObject::SetUniqueID(UInt_t uid) |
virtual void | ShowMembers(TMemberInspector&) |
virtual void | Streamer(TBuffer&) |
void | StreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b) |
virtual void | TObject::SysError(const char* method, const char* msgfmt) const |
virtual void | AliReconstructor::Terminate() 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 |
enum Vertex_t { | kNoVertex | |
kGenVertex | ||
kESDVertex | ||
}; | ||
enum TObject::EStatusBits { | kCanDelete | |
kMustCleanup | ||
kObjInCanvas | ||
kIsReferenced | ||
kHasUUID | ||
kCannotPick | ||
kNoContextMenu | ||
kInvalidObject | ||
}; | ||
enum TObject::[unnamed] { | kIsOnHeap | |
kNotDeleted | ||
kZombie | ||
kBitMask | ||
kSingleKey | ||
kOverwrite | ||
kWriteDelete | ||
}; |
Bool_t | fAngleCorrect | Whether to angle correct |
AliFMDBoolMap | fBad | Strip marked bad |
Float_t | fCurrentVertex | Z-coordinate of primary vertex |
TH1* | fDiagAll | Diagnostics histogram |
TH1* | fDiagStep1 | Diagnostics histogram |
TH1* | fDiagStep2 | Diagnostics histogram |
TH1* | fDiagStep3 | Diagnostics histogram |
TH1* | fDiagStep4 | Diagnostics histogram |
Bool_t | fDiagnostics | Wheter to do diagnostics |
AliESDEvent* | fESD | ESD object(?) |
AliESDFMD* | fESDObj | ESD output object |
TClonesArray* | fMult | Cache of RecPoints |
Int_t | fNMult | Number of entries in fMult |
Float_t | fNoiseFactor | Factor of noise to check |
TTree* | fTreeR | Output tree |
AliFMDReconstructor::Vertex_t | fVertexType | What kind of vertex we got |
Bool_t | fZS[3] | Zero-suppredded? |
UShort_t | fZSFactor[3] | Noise factor for Zero-suppression |
Bool_t | fZombie | Are we a zombie? |
Inheritance Chart: | ||||||||||||
|
Convert Raw digits to AliFMDDigit's in a tree
Return the vertex to use. This is obtained from the ESD object. If not found, a warning is issued.
Get the detector identifier. Note the actual value is cached so that we do not need to do many expensive string comparisons.
Get the reconstruction parameters. Return: Pointer to reconstruction parameters or null if not found or wrong type
Set-up reconstructor to use values from reconstruction parameters, if present, for this event. If the argument @a set is @c false, then restore preset values. Parameters: set
Loop over all entries of the ESD and mark those that are dead as such - otherwise put in the zero signal.
Reconstruct directly from raw data (no intermediate output on digit tree or rec point tree). Parameters: rawReader FMD Raw event reader
Reconstruct directly from raw data (no intermediate output on digit tree or rec point tree). Parameters: reader Raw event reader ctree Not used - 'cluster tree' to store rec-points in.
Reconstruct directly from raw data (no intermediate output on digit tree or rec point tree). Parameters: reader Raw event reader ctree Not used.
Reconstruct event from digits in tree Get the FMD branch holding the digits. FIXME: The vertex may not be known yet, so we may have to move some of this to FillESD. Parameters: digitsTree Pointer to a tree containing digits clusterTree Pointer to output tree
For each digit, find the pseudo rapdity, azimuthal angle, and number of corrected ADC counts, and pass it on to the algorithms used. Parameters: digits Array of digits
For each digit, find the pseudo rapdity, azimuthal angle, and number of corrected ADC counts, and pass it on to the algorithms used. Parameters: digits Array of digits
Process the signal from a single strip Parameters: det Detector ID rng Ring ID sec Sector ID rng Strip ID adc ADC counts
Process the signal from a single strip Parameters: det Detector ID rng Ring ID sec Sector ID rng Strip ID adc ADC counts
Subtract the pedestal off the ADC counts. Parameters: det Detector number rng Ring identifier sec Sector number str Strip number adc ADC counts noiseFactor If pedestal substracted pedestal is less then this times the noise, then consider this to be 0. zsEnabled Whether zero-suppression is on. zsNoiseFactor Noise factor used in on-line pedestal subtraction. Return: The pedestal subtracted ADC counts (possibly 0), or @c USHRT_MAX in case of problems.
Member function to subtract the pedestal from a digit Parameters: det Detector ID rng Ring ID sec Sector ID rng Strip ID adc # of ADC counts Return: Pedestal subtracted signal or USHRT_MAX in case of problems
Converts number of ADC counts to energy deposited. Note, that this member function can be overloaded by derived classes to do strip-specific look-ups in databases or the like, to find the proper gain for a strip. In the first simple version, we calculate the energy deposited as EnergyDeposited = cos(theta) * gain * count where Pre_amp_MIP_Range gain = ----------------- * Energy_deposited_per_MIP ADC_channel_size is constant and the same for all strips. For the production we use the conversion measured in the NBI lab. The total conversion is then: gain = ADC / DAC EdepMip * count => energy = ---------------- gain * DACPerADC Parameters: det Detector ID rng Ring ID sec Sector ID rng Strip ID counts Number of ADC counts over pedestal Return The energy deposited in a single strip, or -1 in case of problems
Converts number of ADC counts to energy deposited. Note, that this member function can be overloaded by derived classes to do strip-specific look-ups in databases or the like, to find the proper gain for a strip. In the first simple version, we calculate the energy deposited as EnergyDeposited = cos(theta) * gain * count where Pre_amp_MIP_Range gain = ----------------- * Energy_deposited_per_MIP ADC_channel_size is constant and the same for all strips. For the production we use the conversion measured in the NBI lab. The total conversion is then: gain = ADC / DAC EdepMip * count => energy = ---------------- gain * DACPerADC Parameters: det Detector ID rng Ring ID sec Sector ID rng Strip ID eta Psuedo-rapidity counts Number of ADC counts over pedestal Return The energy deposited in a single strip, or -1 in case of problems
Converts an energy signal to number of particles.
Note, that this member function can be overloaded by derived
classes to do strip-specific look-ups in databases or the like,
to find the proper gain for a strip.
In this simple version, we calculate the multiplicity as
multiplicity = Energy_deposited / Energy_deposited_per_MIP
where
Energy_deposited_per_MIP = 1.664 * SI_density * SI_thickness
is constant and the same for all strips
Parameters:
det Detector ID
rng Ring ID
sec Sector ID
rng Strip ID
edep Energy deposited in a single strip
Return
The "bare" multiplicity corresponding to the energy deposited
Get the eta and phi of a digit Parameters: det Detector ID rng Ring ID sec Sector ID rng Strip ID eta On return, contains the psuedo-rapidity of the strip phi On return, contains the azimuthal angle of the strip
nothing to be done FIXME: The vertex may not be known when Reconstruct is executed, so we may have to move some of that member function here.
Forwards to above member function
* Flag that we can convert raw data into digits. * * @return always @c true
{ return kTRUE; }
* Return the filled FMD ESD object * * @return FMD ESD object
{ return fESDObj; }
* Set the noise factor * * @param f Factor to use
{ fNoiseFactor = f; }
* Set whether we should do angle correction or nor * * @param use If true, do angle correction
{ fAngleCorrect = use; }
* Set whether we want to do diagnostics. If this is enabled, a * file named @c FMD.Diag.root will be made. It contains a set of * histograms for each event, filed in separate directories in the * file. The histograms are * @verbatim * diagStep1 Read ADC vs. Noise surpressed ADC * diagStep2 Noise surpressed ADC vs. calculated Energy dep. * diagStep3 Energy deposition vs. angle corrected Energy dep. * diagStep4 Energy deposition vs. calculated multiplicity * diagAll Read ADC vs. calculated multiplicity * @endverbatim * * @param use If true, make the diagnostics file
{ fDiagnostics = use; }
* Assignment operator * * @param other Object to assign from * * @return reference to this object