class HMdcTrackingEff: public HReconstructor

_HADES_CLASS_DESCRIPTION


 HMdcTrackingEff

 This class fills two ntuples for single lepton tracks and pairs to estimate
 the tracking efficiency in simulation.
 This tasks needs as input GeantKine, GeantTof, GeantShower ,HMdcTrkCand, HMdcSegSim,
 HMdcTrkCandIdeal and HMdcSegIdeal categories. The MdcTaskSet and HMdcIdealTracking
 with setup of paralle output categories has to run in front to fill the categories.

 In the following the variables of the ntuples are described.

 SINGLE
 single[0] =evNr

 GEANT KINE information
 single[1] =sector    (from inner MdcSegIdeal)
 single[2] =ptrk      (parent Track number)
 single[3] =genInfo   GEANT generator
 single[4] =genInfo1  GEANT generator
 single[5] =genInfo2  GEANT generator
 single[6] =gID       GEANT particle ID
 single[7] =mom       GEANT momentum
 single[8] =vx        GEANT vertex
 single[9] =vy        GEANT vertex
 single[10]=vz        GEANT vertex

Function Members (Methods)

public:
HMdcTrackingEff()
HMdcTrackingEff(const Text_t* name, const Text_t* title)
virtual~HMdcTrackingEff()
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_tHTask::reinit()
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)
voidsetOutputRoot(TString = "ntuple_tracking_eff.root")
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
Bool_tfillIndexTable(Int_t*, Int_t&, Int_t, Int_t*, Int_t*, HLinearCategory*)
voidfillKineData(Int_t&, Int_t, Int_t*, Float_t*, Int_t, HMatrixCategory*, HLinearCategory*)
voidfillNTuple(Int_t, Int_t*, Int_t, HMatrixCategory*, HMatrixCategory*, HLinearCategory*, TIterator*, HMatrixCategory*, TIterator*, HMatrixCategory*, TNtuple*, TNtuple*)
voidfillSegData(Int_t, Int_t*, Float_t*, Int_t, HMatrixCategory*, HMatrixCategory*)
voidfillVectorFromKine(TLorentzVector& v, Int_t slot)
voidfillVectorFromSeg(TLorentzVector& v, Int_t slot, Int_t type)
Int_tfindGeantMeta(Int_t, Int_t, TIterator*, HMatrixCategory*, TIterator*, HMatrixCategory*)
Int_tfindPartner(Int_t*, Int_t, Int_t)
HMdcTrkCand*findSameRealCand(Int_t, Int_t*, HMdcSegSim**, TIterator*, HMatrixCategory*, HMatrixCategory*, HLinearCategory*)
HGeantKine*getKineInfo(Int_t, Int_t&, Int_t&, Float_t&, Float_t&, Float_t&, HLinearCategory*)
Float_tgetLabPhiDeg(Int_t sector, Float_t phi)
Float_tgetPhiPairDeg(TLorentzVector& v)
TStringgetProcessString(Float_t)
voidgetSegPointers(Int_t*, HMdcSegSim**, HMdcTrkCand*, HMatrixCategory*, Int_t mode = 0)
Float_tgetThetaPairDeg(TLorentzVector& v)
Bool_thasPartner(Int_t*, Int_t, Int_t)
voidinitVariables()
voidkineToSegPhiThetaDeg(HGeantKine* kine, Float_t& theta, Float_t& phi)
voidTObject::MakeZombie()
Float_tpairPhiToLabDeg(Float_t phi)
Float_tpairThetaToLabDeg(Float_t theta)
voidprintIndexTable(Int_t*, Int_t)
voidresetDataArray()
voidresetIndexTable(Int_t*, Int_t)
Bool_tsameDecay(Int_t, Int_t, Float_t, Float_t, Float_t, Float_t)
Bool_tsameTrkSegments(Int_t, HMdcSegSim**, Int_t mode = 0)

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:
HLinearCategory*catlHGeantKine!
HMatrixCategory*catmHGeantShower!
HMatrixCategory*catmHGeantTof!
HMatrixCategory*catmHMdcSegIdeal!
HMatrixCategory*catmHMdcSegSim!
HMatrixCategory*catmHMdcTrkCand!
HMatrixCategory*catmHMdcTrkCandIdeal!
Float_tdPairs[98]!
Float_tdSingle[40]!
Bool_tHReconstructor::fActiveActive flag
TList*HReconstructor::fHistogramsList of histograms generated by this reconstructor.
Bool_tHTask::fIsTimedtimer flag
TStringTNamed::fNameobject identifier
TStringfNameRoot! file name of root output file
TObjArrayHReconstructor::fOutputs
TStopwatchHReconstructor::fTimerTask timer
TStringTNamed::fTitleobject title
Int_tindSeg[2]!
Int_tindSegId[2]!
Int_tindexTable[6000]! maxtrks tracks : ind kine, ind seg1_id,ind seg2_id, ind seg1,ind seg2,ind used
Bool_tHTask::isConnected
Bool_tHTask::isInitialised
TIterator*iterGeantShower!
TIterator*iterGeantTof!
TIterator*iterTrkCand!
TIterator*iterTrkCandIdeal!
Bool_tHTask::manual
static const Int_tmaxTrks!
static const Int_tnChi2
static const Int_tnEvntnumber of event indexes stored in data word
static const Int_tnKinenumber of kine indexes stored in data word
static const Int_tnPairs! nEvnt + nkine + nSeg + nChi2 + nkine + nSeg + nChi2 + npair
static const Int_tnSegnumber of segment indexes stored in data word
static const Int_tnSingle! nEvnt + nkine + nSeg + nChi2 + nsingle
static const Int_tnpair
static const Int_tnsingle
Int_toffsetChi2! starting index in data word for chi2 relative to seg
Int_toffsetPair! starting index in data word for pair infos
Int_toffsetSeg1! starting index in data word for seg1 (seg)
Int_toffsetSeg1Kine! starting index in data word for particle 1 (kine)
Int_toffsetSeg2! starting index in data word for seg2 (seg)
Int_toffsetSeg2Kine! starting index in data word for particle 2 (kine)
Int_toffsetSingle! starting index in data word for single infos
TFile*out! file pointer
HTask*HTask::owner
HMdcSegSim*pSeg[2]!
HMdcSegSim*pSegId[2]!
TNtuple*pairs
TNtuple*single
static const Int_tsizeInd!
Int_ttrkNrId!

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

HMdcTrackingEff(void)
 Default constructor calls the function setParContainers().
HMdcTrackingEff(const Text_t* name, const Text_t* title)
 Constructor calls the constructor of class HReconstructor with the name
 and the title as arguments. It also calls the function setParContainers().
~HMdcTrackingEff(void)
 destructor deletes the iterator
void initVariables()
 init of all variables
void setOutputRoot(TString = "ntuple_tracking_eff.root")
 Sets rootfile output of HMdcTrackinEf where ntuples were written.

Bool_t init(void)
void getSegPointers(Int_t* , HMdcSegSim** , HMdcTrkCand* , HMatrixCategory* , Int_t mode = 0)
 get pointer to segments and index values for TrkCand
 mode ==0 both segments are done
 mode ==1 inner segment is done + indseg2=-2
HGeantKine* getKineInfo(Int_t , Int_t& , Int_t& , Float_t& , Float_t& , Float_t& , HLinearCategory* )
 retrieves the Geant ID, parentTrack , generatorInfo,
 generatorInfo1 and generatorInfo2 for Geant track trkNr
Bool_t sameTrkSegments(Int_t , HMdcSegSim** , Int_t mode = 0)
 checks if the Geant trkNr of inner and outer segment is the same
 mode==0 both segments are checked
 mode==1 inner segment is checked
HMdcTrkCand* findSameRealCand(Int_t , Int_t* , HMdcSegSim** , TIterator* , HMatrixCategory* , HMatrixCategory* , HLinearCategory* )
 checks if the Geant trkNr of inner and outer segment is the same
 if only inner segment is available only this is checked
 if both segments are there both are checked
 a loop over all candidates is performed
 if the match of outer segment in all candidates fails
 the first object of trkCand is used
 if no match is found 0 is returned.
 the indexes of both segments are stored in iSeg. indseg==-1 means
 the segment has not been found. indseg==-2 says thare have been
 candidates, but none of them mathed the trk number.
TString getProcessString(Float_t )
 decodes the generatorinfo1 into a string for printing
Bool_t sameDecay(Int_t , Int_t , Float_t , Float_t , Float_t , Float_t )
 checks if a lepton track comes from
 the same source
void resetIndexTable(Int_t* , Int_t )
 resets the first n slots of indextable
Bool_t fillIndexTable(Int_t* , Int_t& , Int_t , Int_t* , Int_t* , HLinearCategory* )
 fills the index table for track track_ct
 the maxium number of tracks is maxTrks.
 the tracks are stored in format
 indexTable[track_ct*sizeInd+xi]=varx where xi=0-sizeInd and varx are the
 values in the following table:
 indKine, indSeg1_id, indSeg2_id, indSeg1, indSeg2, indUsed
 0        1           2           3        4        5
 parentTrk, geantInfo, geantInfo1, geantInfo2
 6          7          8           9
void printIndexTable(Int_t* , Int_t )
 prints one slot track_ct to the screen
Int_t findPartner(Int_t* , Int_t , Int_t )
 returns the slot in indexTable which contains a partner track
 to track i from the same decay (pair)
 if nothing is found -1 is returned
 the found tracks are marked in the table as used
 self combinations are rejected.
Bool_t hasPartner(Int_t* , Int_t , Int_t )
 checks if track has been used in pair
void fillSegData(Int_t , Int_t* , Float_t* , Int_t , HMatrixCategory* , HMatrixCategory* )
 indKine, indSeg1_id, indSeg2_id, indSeg1, indSeg2, indUsed
 0        1           2           3        4        5
 parentTrk, geantInfo, geantInfo1, geantInfo2
 6          7          8           9
void fillKineData(Int_t& , Int_t , Int_t* , Float_t* , Int_t , HMatrixCategory* , HLinearCategory* )
 indKine, indSeg1_id, indSeg2_id, indSeg1, indSeg2, indUsed
 0        1           2           3        4        5
 parentTrk, geantInfo, geantInfo1, geantInfo2
 6          7          8           9
Int_t findGeantMeta(Int_t , Int_t , TIterator* , HMatrixCategory* , TIterator* , HMatrixCategory* )
 search meta (shower and meta) for the same Geant track
 in sector sector.
 return codes:
 -1 if nothing has been found
 -2 if showerhit has been found in other sector
 -3 if tofhit has been found in other sector
 0 if hit has been found in shower (system 0)
 1 if hit has been found in tof    (system 1)
void fillNTuple(Int_t , Int_t* , Int_t , HMatrixCategory* , HMatrixCategory* , HLinearCategory* , TIterator* , HMatrixCategory* , TIterator* , HMatrixCategory* , TNtuple* , TNtuple* )
void fillVectorFromSeg(TLorentzVector& v, Int_t slot, Int_t type)
 fills vector v with one leg of a pair from slot in indextable with segment information
 type has to be 0 (segment from ideal tracking) or 1 (segments from reconstruction)
void fillVectorFromKine(TLorentzVector& v, Int_t slot)
 fills vector v with one leg of a pair from slot in indextable with kine information
void kineToSegPhiThetaDeg(HGeantKine* kine, Float_t& theta, Float_t& phi)
 Convert geant mom to MDC phi/theta angle in degree
Float_t pairPhiToLabDeg(Float_t phi)
 Convert phi from TLorentzVector to phi Lab in degree
Float_t pairThetaToLabDeg(Float_t theta)
 Convert theta from TLorentzVector to theta Lab in degree
Float_t getLabPhiDeg(Int_t sector, Float_t phi)
 Convert MDC phi angle to the lab coordinate system  and degree
Float_t getThetaPairDeg(TLorentzVector& v)
 transform theta of vector to lab system and degree
Float_t getPhiPairDeg(TLorentzVector& v)
 transform phi of vector to lab system and degree
Bool_t finalize(void)
Int_t execute()
void resetDataArray()

Last change: Sat May 22 13:04:11 2010
Last generated: 2010-05-22 13:04

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.