class HRichDigitizer: public HReconstructor

Function Members (Methods)

public:
HRichDigitizer()
HRichDigitizer(const Text_t* name, const Text_t* title, Bool_t kNoise = kFALSE, Float_t slope = 1.0, Bool_t oem = kFALSE)
virtual~HRichDigitizer()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidHReconstructor::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
virtual Bool_tHReconstructor::connectTask(HTask* task, Int_t n = 0)
virtual voidTNamed::Copy(TObject& named) const
virtual voidTObject::Delete(Option_t* option = "")MENU
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 Int_texecute()
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 Bool_tfinalize()
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
virtual HTask*HReconstructor::getComposite()
virtual voidHReconstructor::getConnections()
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
virtual HTask*HTask::getOwner()
TObjArrayHReconstructor::getTable()
virtual HTask*HReconstructor::getTask(const Char_t* name)
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_tHReconstructor::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTNamed::IsSortable() const
virtual voidHReconstructor::isTimed(Bool_t flag = kTRUE)
Bool_tTObject::IsZombie() const
virtual voidTNamed::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual HTask*HReconstructor::next(Int_t& errCode)
virtual Bool_tTObject::Notify()
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)
HTask&HTask::operator=(const HTask&)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTNamed::Print(Option_t* option = "") const
virtual voidHReconstructor::printTimer()
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
virtual Bool_treinit()
voidTObject::ResetBit(UInt_t f)
virtual voidHReconstructor::resetTimer()
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
voidHReconstructor::setActive(Bool_t state)MENU
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual Bool_tHTask::setConnections()
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidHTask::setManual()
virtual voidTNamed::SetName(const char* name)MENU
virtual voidTNamed::SetNameTitle(const char* name, const char* title)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidHTask::setOwner(HTask* atask)
virtual voidTNamed::SetTitle(const char* title = "")MENU
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector& insp, char* parent)
virtual Int_tTNamed::Sizeof() const
virtual voidStreamer(TBuffer& b)
voidStreamerNVirtual(TBuffer& 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 voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidTObject::MakeZombie()
private:
voidaddNoiseToCharge(HRichCalSim* calSim)
Float_tcalcChargeOnWire(const Int_t sector, const Float_t xhit, const Float_t yhit, const Float_t nTrack, const Float_t nFlag, Float_t ene)
Bool_tcalcFeedBack(const Int_t sec, const Float_t xhit, const Float_t yhit, Float_t& ene, Float_t& xhittFB, Float_t& yhittFB, const Float_t charge)
Float_tcalcIndCharge(const Float_t yCharge, const Float_t q4, const Int_t iPdaIndex, const Int_t iWireNr, const Float_t param11, const Float_t param21)
Float_tcalcNoiseOnPad(const Float_t fSigmaPad, const Float_t fFloatMean)
Bool_tcalcQE(const Float_t photlen, const Int_t sec)
Int_tcheckPad(HRichCalSim* calSim)
voiddigitiseCherenkovHits(HGeantRichPhoton* pCerHit, const Int_t count)
voiddigitiseDirectHits(HGeantRichDirect* pDirHit)
voiddigitisePads()
Float_tGaussFun(const Float_t mean, const Float_t sigma)
Int_tgetWireNr(const Float_t xhit)
voidmakeNoiseOnPads()
voidprocessPhoton(const Float_t ene, const Float_t xPos, const Float_t yPos, const Int_t track, const Int_t sector)
Float_tq4Calc(const Float_t charge, const Float_t pos, const Float_t par1, const Float_t par2)
Float_tqX(const Float_t pos)
voidsetDefaults()
HRichPad*translateCorners(HRichPad* pPad, const Float_t dx, const Float_t dy)
voidupdateCharge(const Int_t sector, HRichPad* pPad, const Float_t charge, TVector* rTrack, const Float_t ene)
voidupdateTrack(HRichCalSim* pCalSim, HLocation& loc, TVector* rTrack)

Data Members

public:
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
protected:
Bool_tHReconstructor::fActiveActive flag
TList*HReconstructor::fHistogramsList of histograms generated by this reconstructor.
Bool_tHTask::fIsTimedtimer flag
TStringTNamed::fNameobject identifier
TObjArrayHReconstructor::fOutputs
TStopwatchHReconstructor::fTimerTask timer
TStringTNamed::fTitleobject title
Bool_tHTask::isConnected
Bool_tHTask::isInitialised
Bool_tHTask::manual
HTask*HTask::owner
private:
Int_tbinsQE!
HCategory*catCal! Pointer to the richtrack category
HCategory*catRichDirect! Pointer to the geant rich direct hits category
HCategory*catRichPhoton! Pointer to the geant rich photon category
HCategory*catTrack! Pointer to the cal data category
TArrayFcorrection[6]!
Int_tcountFBphot! counter for feedback photons
Int_tcountNoisePad! number of pads with a noise cont. above threshold.
Float_tdistWirePads! distance between wires and pad plane. in cm
TListfChargeOnWireList! holds charge on a wire
Float_tfChargePerChannel!
Float_tfChargeScaling!
Float_tfDigitPadMatrix[9]!
Float_tfElectronsNr!
TArrayFfExpSlope!
Float_tfFactor1!
Float_tfFactor1Sig!
Float_tfFactor2!
Float_tfFactor2Sig!
Float_tfIncreaseNoise!
Float_tfParam1!
Float_tfParam2!
Float_tfQupper!
Float_tfSigmaValue!
Float_tfSlopeCorrection!
TListfTrackNumberList! holds track number and flag for a hit
Float_tfWiresDist!
Int_tfWiresNr!
Float_tfYShift! shift on the y pad plane coordinate necessary to
TF1*ga! Gauss function
Bool_tisActiveNoise! flag to switch on/off the electronic noise
Bool_tisOEM! flag to select oem analysis.
HIterator*iterRichCal!
HIterator*iterRichDirect! Iterator over the geant rich direct hits category
HIterator*iterRichPhoton! Iterator over the geant rich photon category
HIterator*iterRichTrack! Iterator over the carRichTrack category
HLocationloc
static const Float_tnoiseCharge[1000]!
Float_tnoiseProb!
HRichCalPar*pCalPar! Pointer to calibration parameters
HRichDigitisationPar*pDigitisationPar! Pointer to digitisation parameters
HRichGeometryPar*pGeometryPar! Pointer to geometry parameters
TArrayFphoteffic!
TArrayFphotlength!

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

HRichDigitizer(const Text_t* name, const Text_t* title, Bool_t kNoise = kFALSE, Float_t slope = 1.0, Bool_t oem = kFALSE)
HRichDigitizer()
setDefaults()
~HRichDigitizer()
init()
reinit()
execute()
 At the end of the execute() the TClonesArray that contains
 the track numbers is sorted by the pad addreses. Then
 every CalSim object is retrieved from the catRichCal
 container to assign to each pad the corresponding nTrack1, nTrack2.
 These 2 numbers are the indexes of the track nbs. in the TClonesArray
 HRichTrack. Finally the noise is calculated.
GaussFun(const Float_t mean, const Float_t sigma)
calcQE(const Float_t photlen, const Int_t sec)
getWireNr(const Float_t xhit)
calcChargeOnWire(const Int_t sector, const Float_t xhit, const Float_t yhit, const Float_t nTrack, const Float_t nFlag, Float_t ene)
 this function calculates the charge on each wire and saves it in a TList
 moreover, it saves the track number and the corresponding flag
 (cf HRichTrack) in a second TList.
 The charge is calculated according to one exponential function
 obtained fitting the total charge distribution of the photon candidates
 belonging to class one ( OEM data).
 That means that the so calculated charge isn't in reality the
 original charge deposited on the wire but the total amount of the charge
 coupled to the pads. Therefore it isn't any longer necessary to
 use an additional coupling factor. ( 75%)
digitiseCherenkovHits(HGeantRichPhoton* pCerHit, const Int_t count)
 for every photon hit on a pad the resulting charge on a wire
 is calculated and the track number of the photon parent is stored.
 (cf. calcChargeOnWire).
processPhoton(const Float_t ene, const Float_t xPos, const Float_t yPos, const Int_t track, const Int_t sector)
calcFeedBack(const Int_t sec, const Float_t xhit, const Float_t yhit, Float_t& ene, Float_t& xhittFB, Float_t& yhittFB, const Float_t charge)
 We assume that the feed back photon is produced on the anodic wire,
 the number of the feed back photon is proportional to the value A0.
digitiseDirectHits(HGeantRichDirect* pDirHit)
 for every direct hit (charge particle hitting the RICH or ionizing
 the gas near the surface of the photon detector)  the
 resulting charge on the wires is calculated and the track number
 of the charged particle hitting the pad is stored.
 (cf. calcChargeOnWire)
translateCorners(HRichPad* pPad, const Float_t dx, const Float_t dy)
 check what you want to translate - probably real corners
makeNoiseOnPads()
 nbNoisePads is the number of pads on which the electronic noise
 will produce a non zero signal. This number is extimated taken
 into account the threshold taht has been used for the pedestals.
calcNoiseOnPad(const Float_t fSigmaPad, const Float_t fFloatMean)
 the charge induced on the pad by the electronic noise
 is calculated according to a gauss function with
 sigma = fSigmaPad*fIncreaseNoise and mean 0.
 Anyway only values above threshold
 (fSigmaValue * fSigmaPad)
 are drawn
addNoiseToCharge(HRichCalSim* calSim)
 An additional charge is added on pads that have already
 been "fired" by a photon.
 This charge is drawn according to a Gauss distribution
 with sigma = fSigmaPad*fIncreaseNoise and mean = 0.
checkPad(HRichCalSim* calSim)
 this function checks if the pads fired by the photons
 are above threshold.
 The procedure used to calculate the threshols is the
 same used for real data.  The charge on the pad is composed
 of the signal induced by the photon plus the noise fluctuation.
 The float part of the mean value of the noise distribution
 is added to the charge then
 the charge value is casted to an integer and is
 compared to the threshold.
 If the charge is above threshold, the float part of the mean is
 subtracted from the total charge and a random number between 0 and 1
 is added to the integer produce a float.
digitisePads()
 for each wire on which some charge has been deposited
 the corresponding coupled pads are calculated.
 The function updateCharge creates a HRichCalSim obj if
 the charge on the pad is greater than zero.
 A cut off threshold is applied to each pad in the execute func.
 after the digitilasation of all the hits.
 If the pad is hit twice in the same event, the charges
 corresponding to the 2 different hits are added.
 The particle track number is passed to the function
 updateCharge, too.
calcIndCharge(const Float_t yCharge, const Float_t q4, const Int_t iPdaIndex, const Int_t iWireNr, const Float_t param11, const Float_t param21)
 iWireNr is used to determine whether the wire is
 the left or the right one.
 Even wire numbers correspond to right.
 for the side pads a coupling costant is multiplied
 by the charge on the central pad, the upper an lower
 pad get an amount of charge that is position dependent.
qX(const Float_t pos)
 This function calculate the charge ratio between the upper/lower
 pad and the central one
q4Calc(const Float_t charge, const Float_t pos, const Float_t par1, const Float_t par2)
 This function calculate the charge induced on the central pad.
 the coupling factor (75%) from the wire to the pad has
 been discarded since the charge distribution on the wire
 has been calculated fitting pads responses.
updateCharge(const Int_t sector, HRichPad* pPad, const Float_t charge, TVector* rTrack, const Float_t ene)
 This function creates an HRichCalSim obj that corresponds
 to a fired pad, it calls the function updateTrack,
 that stores the corresponding track numbers.
updateTrack(HRichCalSim* pCalSim, HLocation& loc, TVector* rTrack)
 this function stores the track numbers of parent
 particles of photons and of direct hits in a linear
 category (HRichTrack). This category is set sortable.
finalize()

Last change: Sat May 22 13:08:41 2010
Last generated: 2010-05-22 13:08

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.