class HMdcGeantSeg: public HMdcList12GroupCells

_HADES_CLASS_DESCRIPTION


 HMdcGeantSeg

   Class collect and keep GEANT and mdc digitized information about
   one inner or outer mdc segment


 HMdcGeantTrack

   Class collect and keep GEANT and mdc digitized information about
   one track. Keep also array of HMdcGeantSeg objects for this track.


 HMdcGeantEvent

   Class fill and keep array of HMdcGeantTrack objects for one event.


 HMdcTrackInfSim

   Class fill HMdcClusSim, HMdcSegSim and HMdcHitSim objects
   by information from HMdcGeantTrack and HMdcGeantSeg


 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 Meaning of HMdcGeantTrack::trackStatus, HMdcGeantSeg::segmentStatus
 and HMdcClusSim::trackStatus[tr] bits.

 Bits in HMdcGeantTrack::trackStatus:

  Bit 8, GEANT_BUG          : =0 - GEANT bug was found in this track
  Bit 7, NO_META_HIT        : =0 - track don't reach META
  Bit 6, NOT_RECONSTRUCTABLE: =0 - not reconstructable track. It can be if
                                   track not present in mdc,
                                   track cross more then one sector,
                                   numder of segments <1 or >2,
                                   upstream direction of at list one segment,
                                   track doesn't cross inner or outer segment,
                                   num. of segments with digi.wires <1 or >2,
                                   num.digi.wires in track < 5*num.segments,
                                   at list one seg. has <3 layers or <5 wires
  Bits 1-5 are eq.1

 Bits in HMdcGeantSeg::segmentStatus trackStatus bits plus:

  Bit 5, SEG_NOT_RECONS_ABLE: =0 - segment has <3 layers or <5 digi.wires
  Bit 4, HIT_NOT_RECONS_ABLE: =0 - at list one mdc in segment has
                                   <3 fired layers or <5 wires

 Bits in HMdcClusSim::trackStatus[tr] are segmentStatus bits plus:

  Bit 3, CLFLEVEL_TOO_HIGH  : =0 - segment can't be found due to high level
                                   of cluster finder
  Bit 2, FAKE_CONTRIBUTION  : =0 - fake contribution in cluster
  Bit 1, SEGS_MATH_OK       : =0 - no inner-outer segments matching

Function Members (Methods)

public:
HMdcGeantSeg(Short_t ns = -1)
HMdcGeantSeg(const HMdcGeantSeg&)
virtual~HMdcGeantSeg()
voidTObject::AbstractMethod(const char* method) const
Int_tHMdcList12GroupCells::add(HMdcList12GroupCells* lst)
voidaddFirstHit(HGeantMdc* pGeantMdc, Bool_t* mdcSecSetup, Short_t ns)
Bool_taddHit(HGeantMdc* pGeantMdc)
voidanalyseClust(HMdcClusSim* pClus, Int_t trInd, Int_t modICl)
virtual voidTObject::AppendPad(Option_t* option = "")
Bool_tareWiresCollected() const
virtual voidTObject::Browse(TBrowser* b)
static TClass*Class()
virtual const char*TObject::ClassName() const
voidclear(Short_t ns)
virtual voidTObject::Clear(Option_t* = "")
voidclearSegClus()
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tTObject::Compare(const TObject* obj) const
Int_tHMdcList12GroupCells::compare(const HMdcList12GroupCells* lst, Int_t l1 = -1, Int_t l2 = -1, HMdcList12GroupCells* lstIdent = 0) const
Int_tHMdcList12GroupCells::compareAndUnset(const HMdcList12GroupCells* lst, HMdcList12GroupCells* lstIdent, Int_t modi = -1)
virtual voidTObject::Copy(TObject& object) const
voidHMdcList12GroupCells::copyData(const UChar_t* a, const Int_t* fc)
virtual voidTObject::Delete(Option_t* option = "")MENU
voidHMdcList12GroupCells::delTime(Int_t lay, Int_t cell, UChar_t time)
static Char_tdirHit(HGeantMdc* pGeantMdc)
static Char_tdirTheta(Float_t th)
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 TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
static Bool_tHMdcList12GroupCells::findOverlap(Int_t& c1, Int_t& c2)
Int_tHMdcList12GroupCells::get4FirstCells(Int_t lay, Int_t* list) const
Int_tHMdcList12GroupCells::getActiveModule() const
const UChar_t*HMdcList12GroupCells::getArr() const
Int_tHMdcList12GroupCells::getCell(Int_t lay, Int_t idx) const
Char_tgetDirection() const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
Bool_tgetFirstAndLastGMdcLayers(Int_t m, Int_t& lFisrt, Int_t& lLast) const
const Int_t*HMdcList12GroupCells::getFirstCell() const
Int_tHMdcList12GroupCells::getFirstCell(Int_t lay) const
Int_tgetFirstGeantMdcLayer(Int_t m) const
Int_tgetFirstLayer12() const
virtual const char*TObject::GetIconName() const
Char_tgetIOSeg() const
Int_tHMdcList12GroupCells::getLastCell(Int_t lay) const
Int_tgetLastGeantMdcLayer(Int_t m) const
Int_tgetLastLayer12() const
Bool_tgetLayerHitPos(Int_t m, Int_t l, HGeomVector& hit, Bool_t extrFlag = kTRUE)
Bool_tgetLayerHitPosLab(Int_t m, Int_t l, HGeomVector& hit, Bool_t extrFlag = kTRUE)
Bool_tgetLayerHitPosSec(Int_t m, Int_t l, HGeomVector& hit, Bool_t extrFlag = kTRUE)
UChar_tHMdcList12GroupCells::getListLayers(Int_t imod = -1) const
Int_tHMdcList12GroupCells::getMaxNCellsPerLay() const
Bool_tgetMdcHitPos(Int_t m, HGeomVector& hit)
Bool_tgetMdcHitPosLab(Int_t m, HGeomVector& hit)
Bool_tgetMdcHitPosSec(Int_t m, HGeomVector& hit)
HGeantMdc*getMdcLayerHit(Int_t m, Int_t l)
HGeantMdc*getMdcMidPlaneHit(Int_t m)
Char_tgetMod() const
Int_tgetModIOfGeantTrack() const
virtual const char*TObject::GetName() const
Int_tHMdcList12GroupCells::getNCells() const
Int_tHMdcList12GroupCells::getNCells(Int_t lay, Int_t layEnd = -1) const
Int_tHMdcList12GroupCells::getNDrTimes() const
Int_tHMdcList12GroupCells::getNDrTimes(Int_t lay) const
Int_tHMdcList12GroupCells::getNDrTimes(Int_t lay1, Int_t lay2) const
Int_tHMdcList12GroupCells::getNDrTimesMod(Int_t m) const
Bool_tHMdcList12GroupCells::getNext(Int_t lay, Int_t& cell) const
Bool_tHMdcList12GroupCells::getNextCell(Int_t& lay, Int_t& cell) const
Char_tgetNGMdcHits() const
Char_tgetNGMdcHits(Char_t m) const
Int_tgetNGMdcs() const
Int_tHMdcList12GroupCells::getNLayers() const
Int_tHMdcList12GroupCells::getNLayers(Int_t imod) const
Int_tHMdcList12GroupCells::getNLayersMod(Int_t mod) const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
Char_tgetSec() const
UChar_tgetStatus() const
UChar_tHMdcList12GroupCells::getTime(Int_t lay, Int_t cell) const
virtual const char*TObject::GetTitle() const
Int_tgetTrack() const
virtual UInt_tTObject::GetUniqueID() const
Int_tgetUserFlag() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::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 voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
Bool_tis1or2HitsNotRec() const
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tisGEANTBug() const
Bool_tisGntTrackOk() const
Bool_tHMdcList12GroupCells::isIncluded(const HMdcList12GroupCells& lst, Int_t l1 = 0, Int_t l2 = 11) const
Bool_tisNoMeta() const
Bool_tTObject::IsOnHeap() const
Bool_tisSegNotRec() const
virtual Bool_tTObject::IsSortable() const
Bool_tisTrackNotRec() const
Bool_tTObject::IsZombie() const
virtual voidTObject::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
Int_tHMdcList12GroupCells::next(Int_t lay, Int_t prCell) const
Int_tHMdcList12GroupCells::next(Int_t lay, Int_t prCell, UChar_t& tm) const
Int_tHMdcList12GroupCells::nIdentDrTimes(const HMdcList12GroupCells* lst, Int_t l1 = 0, Int_t l2 = 11) const
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)
HMdcGeantSeg&operator=(const HMdcGeantSeg&)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
Int_tHMdcList12GroupCells::previous(Int_t lay, Int_t prCell) const
voidprint()
virtual voidTObject::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 = "")
voidsetAddress(Char_t sc, Char_t ios)
voidsetAnotherHit(HGeantMdc* pGeantMdc)
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
voidsetDirection(Char_t hitDir)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidsetMod(Char_t m)
static voidTObject::SetObjectStat(Bool_t stat)
voidsetStatusFlags(UChar_t& trackStatus)
Int_tHMdcList12GroupCells::setTime(Int_t lay, Int_t cell, UChar_t time)
voidsetTrackNumber(Int_t trk)
virtual voidTObject::SetUniqueID(UInt_t uid)
voidsetUserFlag(Int_t fl)
voidsetWiresAreColl()
voidsetWiresAreNotColl()
virtual voidShowMembers(TMemberInspector& insp, char* parent)
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:
voidcalcMdcHitPos(Int_t modI, Int_t lay1, Int_t lay2, HGeomVector& hit, Int_t lay = 6)
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
Bool_tisModClusBetter(HMdcClusSim* pClus, Int_t trInd, Int_t mInd)
Bool_tisSegClusBetter(HMdcClusSim* pClus, Int_t trInd)
voidTObject::MakeZombie()
Int_tmdcInd(Int_t m) const
Bool_tnMdcOk(Int_t m) const
Int_tsetModClustPos(HMdcClusSim* pMdcClusSim, Int_t indtr, Int_t mInd)
Int_tsetSegClustPos(HMdcClusSim* pMdcClusSim, Int_t indtr)
Bool_ttestBit(UChar_t bit) const

Data Members

public:
enum HMdcList12GroupCells::[unnamed] { laySz
};
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
protected:
Bool_tareWiresColl=kTRUE if wires are collected
Float_tdXXgeant-Xcluster
Float_tdXCh[2]Xgeant-Xcluster
Float_tdYYgeant-Ycluster
Float_tdYCh[2]Ygeant-Ycluster
Char_tdirectionsegment direction (+1 - good one)
HGeantMdc*geantLay[2][7][mod%2][lay] lay=6 - mid-plane mdc
Char_tioseg...
Char_tmodmod = -2 for two mdc segment
Char_tnHitsMdc[2]num. of geant hits in each mdc (layers only!)
Short_tnLayersnumber of track layers in cluster
Short_tnLayersCh[2]number of track layers in cluster
UChar_tnWiresnumber of track wires in cluster
UChar_tnWiresCh[2]number of track wires in cluster
HMdcClusSim*pClusBestthe best cluster for this geant seg.
HMdcClusSim*pClusBestCh[2]For chamber clusters
Char_tsecaddress of each mdc segment
Short_tsegNumbersegment sequential number in track
UChar_tsegmentStatusbits array (see hmdcgeanttrack.cc)
UChar_ttrIndBestindex of track in HMdcClusSim
UChar_ttrIndBestCh[2]index of track in HMdcClusSim
Int_ttrackNumberGEANT track number
Int_tuserFlagUser's flag

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

HMdcGeantSeg(Short_t ns)
void clear(Short_t ns)
void addFirstHit(HGeantMdc* pGeantMdc, Bool_t* mdcSecSetup, Short_t ns)
Char_t dirHit(HGeantMdc* pGeantMdc)
Bool_t addHit(HGeantMdc* pGeantMdc)
Int_t getModIOfGeantTrack(void)
 return -2 if track present in both mdc of segment
 otherwise return mdc index (0 or 1)
void setAnotherHit(HGeantMdc* pGeantMdc)
Int_t getFirstLayer12(void)
Int_t getLastLayer12(void)
HGeantMdc* getMdcLayerHit(Int_t m, Int_t l)
Int_t getNGMdcs(void)
void print(void)
Bool_t getLayerHitPos(Int_t m, Int_t l, HGeomVector& hit, Bool_t extrFlag = kTRUE)
 Return geant "hit" position in mdc layer.
 If no GeantMdc hit in this layer and extrFlag=kTRUE
 function does extrapolation to this layer.
Int_t getFirstGeantMdcLayer(Int_t m) const
 Return first layer with geant hit in mdc "m".
Int_t getLastGeantMdcLayer(Int_t m) const
 Return first layer with geant hit in mdc "m".
Bool_t getFirstAndLastGMdcLayers(Int_t m, Int_t& lFisrt, Int_t& lLast) const
 return kFALSE if "m" is not valid or one mdc geant hit exist only.
Bool_t getMdcHitPos(Int_t m, HGeomVector& hit)
 Return geant "hit" position in mdc mid-plane.
void calcMdcHitPos(Int_t modI, Int_t lay1, Int_t lay2, HGeomVector& hit, Int_t lay = 6)
 Linear extrapolation of two geant mdc hits to the mdc mid-plane.
 Not precise solution but well enough!
Bool_t getMdcHitPosSec(Int_t m, HGeomVector& hit)
 Return geant "hit" position in mid-plane mdc in sector coor.sys.
Bool_t getMdcHitPosLab(Int_t m, HGeomVector& hit)
 Return geant "hit" position in mid-plane mdc in lab.coor.sys..
Bool_t getLayerHitPosSec(Int_t m, Int_t l, HGeomVector& hit, Bool_t extrFlag = kTRUE)
 Return geant "hit" position in mdc layer in sector coor.sys..
Bool_t getLayerHitPosLab(Int_t m, Int_t l, HGeomVector& hit, Bool_t extrFlag = kTRUE)
 Return geant "hit" position in mdc layer in lab.coor.sys.
 If no GeantMdc hit in this layer and extrFlag=kTRUE
 function does extrapolation to this layer.
void setStatusFlags(UChar_t& trackStatus)
void analyseClust(HMdcClusSim* pClus, Int_t trInd, Int_t modICl)
 Analyse one mod. of seg. if track present in one mod. only or it is mixed cl.:
Bool_t isSegClusBetter(HMdcClusSim* pClus, Int_t trInd)
Bool_t isModClusBetter(HMdcClusSim* pClus, Int_t trInd, Int_t mInd)
Int_t setModClustPos(HMdcClusSim* pMdcClusSim, Int_t indtr, Int_t mInd)
 calculate geant track position on the project plane for chamber claster
 return x,y and flag
 flag = 0 - ok.
 flag = 1 - address mismatching or no HMdcSizesCells object
 flag = 2 - number layers in cluster <2 from track "trInd"
 flag = 3 - not enough geant mdc hits and others
Int_t setSegClustPos(HMdcClusSim* pMdcClusSim, Int_t indtr)
 calculate geant track position on the project plane for segment claster
 return x,y and flag
 flag = 0 - ok.
 flag = 1 - address mismatching or no HMdcSizesCells object
 flag = 2 - number layers in cluster <2 from track "trInd"
 flag = 3 - not enough geant mdc hits and others
HMdcGeantSeg(Short_t ns=-1)
~HMdcGeantSeg(void)
{}
void setAddress(Char_t sc, Char_t ios)
{sec=sc; ioseg=ios;}
void setDirection(Char_t hitDir)
{direction=hitDir;}
void setWiresAreColl(void)
{areWiresColl=kTRUE;}
void setWiresAreNotColl(void)
{areWiresColl=kFALSE;}
void setMod(Char_t m)
{mod=m;}
Char_t getSec(void)
{return sec;}
Char_t getIOSeg(void)
{return ioseg;}
Char_t getMod(void)
{return mod;}
Int_t getTrack(void)
{return trackNumber;}
Char_t getDirection(void)
{return direction;}
Char_t getNGMdcHits(Char_t m) const
{return nHitsMdc[0]+nHitsMdc[1];}
Char_t getNGMdcHits(Char_t m) const
{return nMdcOk(m) ? nHitsMdc[m%2]:0;}
UChar_t getStatus(void)
{return segmentStatus;}
Bool_t areWiresCollected(void)
{return areWiresColl;}
HGeantMdc* getMdcMidPlaneHit(Int_t m)
{return nMdcOk(m) ? geantLay[m%2][6]:0;}
Bool_t isGntTrackOk(void)
{return testBit(255);}
Bool_t isGEANTBug(void)
{return !testBit(128);}
Bool_t isNoMeta(void)
{return !testBit(64);}
Bool_t isTrackNotRec(void)
{return !testBit(32);}
Bool_t isSegNotRec(void)
{return !testBit(16);}
Bool_t is1or2HitsNotRec(void)
{return !testBit(8);}
void clearSegClus(void)
{pClusBest=pClusBestCh[0]=pClusBestCh[1]=0;}
void setUserFlag(Int_t fl)
{userFlag=fl;}
Int_t getUserFlag(void)
{return userFlag;}
Char_t dirTheta(Float_t th)
{return (th<=90.) ? +1 : -1;}
void setTrackNumber(Int_t trk)
{trackNumber = trk;}
Bool_t nMdcOk(Int_t m) const
{return m>=0 && m<4 && ioseg==m/2;}
Int_t mdcInd(Int_t m) const
{return (m%2)*7+6;}
Bool_t testBit(UChar_t bit) const
{return (segmentStatus&bit)==bit;}

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

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.