ROOT logo
HYDRA - THE HADES ANALYSIS PACKAGE » (UNKNOWN) » HMdcSegSim

class HMdcSegSim: public HMdcSeg

_HADES_CLASS_DESCRIPTION

  HMdcSegSim

 This class is derived from HMdcSeg for simulated events.
 Additional data elements are following:
   nTracks - the number of tracks in the list of tracks numbers
   listTracks[5] - the list of tracks numbers (GEANT)
   nTimes[5] - num. of drift times from each track in this segment hit
     (not cells because one cell can have 2 drift times from 2 tracks)
   Number of noise wires is kept in nTimes[4] and
   if nTimes[4]>0 listTracks[4]=-99
 This information can be accessed via the functions:
    Int_t getNTracks(void)
    Int_t getTrack(const Int_t n)      0 <= n < getNTracks()
    UChar_t getNTimes(const Int_t n)
    Int_t   getNumNoiseWires(void)

 The list of tracks is sorted by flag "real track", matching flag and number of wires.
 The list of tracks is sorted after filling of HMdcSegSim container
 via function  void sortTrListByContr(void).

 Example of using getGoodTrack(...) function:
  HMdcSegSim* innerSeg =...;
  HMdcSegSim* outerSeg =...;
  Int_t nWiresCut = 5; // 5 is default value
  Int_t nGoodInnerTracks = innerSeg->getNNotFakeTracks();
  for(Int_t i1=0;i1<nGoodInnerTracks;i1++) {
    Int_t track = innerSeg->getGoodTrack(i1,outerSeg,nWiresCut);
    if(track==0) {
      fake!
    } else if(track>0) {
      good track!
    } else { //<0

    }
  }


 Example of using getNextGoodTrack(...) function:
  HMdcSegSim* innerSeg =...;
  HMdcSegSim* outerSeg =...;
  Int_t nWiresCut = 5; // 5 is default value
  Int_t i1=0;
  Int_t track;
  while( (track=innerSeg->getNextGoodTrack(i1,outerSeg,nWiresCut)) >0) {
    good track!
  }


Function Members (Methods)

public:
HMdcSegSim()
HMdcSegSim(const HMdcSegSim&)
virtual~HMdcSegSim()
voidTObject::AbstractMethod(const char* method) const
voidaddTrack(Int_t track, UChar_t nTm, UChar_t nDi = 0)
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
Int_tcalcNTracks()
static TClass*Class()
virtual const char*TObject::ClassName() const
voidclear()
voidHMdcSeg::Clear()
voidclearSimInfo()
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tTObject::Compare(const TObject* obj) const
virtual voidTObject::Copy(TObject& object) 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 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
Int_tfindTrack(Int_t geantNum, Int_t nDigTimes = 0) const
Int_tHMdcCellGroup::getCell(Int_t layer, Int_t idx)
Float_tHMdcSeg::getChi2() const
Int_tHMdcSeg::getClusIndex() const
HSymMat&HMdcSeg::getCovariance()
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
voidHMdcSeg::getErrPar(Float_t& p1, Float_t& p2, Float_t& p3, Float_t& p4)
Float_tHMdcSeg::getErrPhi()
Float_tHMdcSeg::getErrR()
Float_tHMdcSeg::getErrTheta()
Float_tHMdcSeg::getErrZ()
Int_tHMdcSeg::getFlag() const
Int_tgetGoodTrack(Int_t i1, HMdcSegSim* outerSeg, Int_t nWiresCut = 5) const
Int_tHMdcSeg::getHitInd(Int_t i) const
virtual const char*TObject::GetIconName() const
Int_tHMdcSeg::getIOSeg() const
Int_tHMdcCellGroup::getLayerListCells(Int_t layer, Int_t* list)
virtual const char*TObject::GetName() const
Int_tHMdcSeg::getNBinsClus() const
Int_tHMdcCellGroup::getNCells(Int_t layer)
Int_tHMdcSeg::getNCellsClus() const
UChar_tgetNDigiTimes(Int_t n) const
Int_tgetNextGoodTrack(Int_t& i1, HMdcSegSim* outerSeg, Int_t nWiresCut = 5) const
Int_tHMdcCellGroup12::getNLayers()
Int_tHMdcCellGroup12::getNLayers(UInt_t mod)
Int_tHMdcSeg::getNMergedClus() const
Char_tgetNNotFakeTracks() const
UChar_tHMdcCellGroup12::getNSharedCells(HMdcCellGroup12* gr)
UChar_tHMdcCellGroup12::getNSharedCells(HMdcCellGroup12* gr, Int_t& nLayers, Int_t& nLayOr)
UChar_tgetNTimes(Int_t n) const
Int_tgetNTracks() const
Int_tgetNumNoiseWires() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
voidHMdcSeg::getPar(Float_t& p1, Float_t& p2, Float_t& p3, Float_t& p4) const
Float_tHMdcSeg::getPhi() const
voidHMdcSeg::getPhi(Float_t& ph, Float_t& err)
Float_tHMdcSeg::getR() const
voidHMdcSeg::getR(Float_t& rl, Float_t& err)
Float_tHMdcSeg::getRprime() const
Int_tHMdcSeg::getSec() const
Int_tHMdcCellGroup::getSignId(Int_t layer, Int_t idx)
Int_tgetStatus() const
Int_tHMdcCellGroup12::getSumWires()
Int_tHMdcCellGroup12::getSumWires(UInt_t mod)
Float_tHMdcSeg::getTheta() const
voidHMdcSeg::getTheta(Float_t& th, Float_t& err)
voidHMdcSeg::getThetaPhi(Float_t& th, Float_t& ert, Float_t& ph, Float_t& erp)
virtual const char*TObject::GetTitle() const
Int_tgetTrack(Int_t n) const
Int_tgetTrackIndex(Int_t tr) const
UChar_tgetTrackStatus(Int_t n) const
virtual UInt_tTObject::GetUniqueID() const
Float_tHMdcSeg::getX1() const
Short_tHMdcSeg::getX1Sh() const
Float_tHMdcSeg::getX2() const
Short_tHMdcSeg::getX2Sh() const
Float_tHMdcSeg::getY1() const
Short_tHMdcSeg::getY1Sh() const
Float_tHMdcSeg::getY2() const
Short_tHMdcSeg::getY2Sh() const
Float_tHMdcSeg::getZ() const
voidHMdcSeg::getZ(Float_t& zl, Float_t& err)
Float_tHMdcSeg::getZprime() const
voidHMdcSeg::getZR(Float_t& zl, Float_t& erz, Float_t& rl, Float_t& err)
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(Int_t i) const
virtual TClass*IsA() const
Bool_tisClFnLevelTooHigh(Int_t i) const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
Bool_tHMdcSeg::isFake() const
Bool_tisFakeContribution(Int_t i) const
virtual Bool_tTObject::IsFolder() const
Bool_tisGEANTBug(Int_t i) const
Bool_tisGntTrackOk(Int_t i) const
Bool_tisNoMeta(Int_t i) const
Bool_tHMdcSeg::isOffVertexClus() const
Bool_tTObject::IsOnHeap() const
Bool_tisSegNotRec(Int_t i) const
virtual Bool_tTObject::IsSortable() const
Bool_tisTrackNotRec(Int_t i) const
Bool_tTObject::IsZombie() const
virtual voidTObject::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
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)
HMdcSegSim&operator=(const HMdcSegSim&)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
voidprint()
virtual voidTObject::Print(Option_t* option = "") const
voidHMdcCellGroup12::printCellGroup()
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
Bool_tresetFakeContributionFlag()
voidHMdcSeg::resetFakeFlag()
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(ostream& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
voidHMdcSeg::setChi2(const Float_t chl)
voidHMdcSeg::setClusIndex(Int_t ind)
voidHMdcSeg::setClusInfo(Int_t nBins, Int_t nCells, Int_t nMerClus)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
Bool_tsetFakeContributionFlag()
voidHMdcSeg::setFakeFlag()
voidHMdcSeg::setFlag(const Int_t fl)
voidHMdcSeg::setHitInd(UInt_t i, UInt_t idx)
voidHMdcSeg::setIOSeg(Int_t seg)
voidHMdcCellGroup::setLayerGroup(Int_t layer, UShort_t cl)
voidsetNDigiTimes(Int_t n, UChar_t nt)
voidsetNTracks(Int_t nTr, Char_t nNF, Char_t ioS)
voidsetNTracks(Int_t nTr, const Int_t* listTr, const UChar_t* nTm, const UChar_t* nDi = 0)
static voidTObject::SetObjectStat(Bool_t stat)
voidHMdcSeg::setOffVertexClus()
voidHMdcSeg::setPar(const Float_t zl, const Float_t rl, const Float_t th, const Float_t ph)
voidHMdcSeg::setPar(const Float_t zl, const Float_t ezl, const Float_t rl, const Float_t erl, const Float_t th, const Float_t eth, const Float_t ph, const Float_t eph)
voidHMdcSeg::setPhi(const Float_t ph)
voidHMdcSeg::setPhi(const Float_t ph, const Float_t err)
voidHMdcSeg::setR(const Float_t rl)
voidHMdcSeg::setR(const Float_t rl, const Float_t err)
voidHMdcSeg::setRprime(const Float_t rpr)
voidHMdcSeg::setSec(Int_t sec)
voidHMdcCellGroup::setSignId(Int_t layer, Int_t cell, Int_t t1, Int_t t2 = 0, Int_t t3 = 0, Int_t t4 = 0)
voidsetStatus(Int_t f)
voidHMdcSeg::setTheta(const Float_t th)
voidHMdcSeg::setTheta(const Float_t th, const Float_t err)
voidHMdcSeg::setThetaPhi(const Float_t th, const Float_t ert, const Float_t ph, const Float_t erp)
voidsetTrackInf(const Int_t* lst, const Short_t* nTms, const UChar_t* nDTms, const UChar_t* tSt)
voidsetTrackStatus(Int_t n, UChar_t status)
virtual voidTObject::SetUniqueID(UInt_t uid)
voidHMdcSeg::setX1(Double_t v)
voidHMdcSeg::setX2(Double_t v)
voidHMdcSeg::setXYPar(Double_t vx1, Double_t vy1, Double_t vx2, Double_t vy2)
voidHMdcSeg::setY1(Double_t v)
voidHMdcSeg::setY2(Double_t v)
voidHMdcSeg::setZ(const Float_t zl)
voidHMdcSeg::setZ(const Float_t zl, const Float_t err)
voidHMdcSeg::setZprime(const Float_t zpr)
voidHMdcSeg::setZR(const Float_t zl, const Float_t erz, const Float_t rl, const Float_t err)
virtual voidShowMembers(TMemberInspector&)
voidsortTrListByContr()
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_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:
Short_tHMdcSeg::convertToShort(Double_t v) const
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidHMdcCellGroup::initLookups()
voidTObject::MakeZombie()
voidHMdcCellGroup::printCells(Int_t nlays)
private:
voidexchangeTrPos(Int_t t1, Int_t t2)
Bool_tindOk(Int_t i) const
Bool_ttestBit(Int_t i, UChar_t b) const
UChar_ttrackBits(Int_t i) const

Data Members

protected:
static UChar_tHMdcCellGroup::cellPosLookUp[4][256]!
Float_tHMdcSeg::chi2chi square per degree of freedom
Int_tHMdcSeg::clusIndindex of MDC cluster
HSymMat4HMdcSeg::covcovariance matrix 4x4 in sector system
Int_tHMdcSeg::flagCluster info: number of cells, bins and merged clusters
UShort_tHMdcCellGroup12::iLayer[12]
UInt_tHMdcSeg::indindex for hit1/sector
UInt_tHMdcSeg::ind2index for hit2/inner-outer segment
Char_tioSMatchStatus> 0 - num. of not fake tracks with IOseg matching
Int_tlistTracks[5]list of tracks
static Bool_tHMdcCellGroup::lookUpsInitialized!
static UChar_tHMdcCellGroup::nCellsLookUp[256]!
UChar_tnDigiTimes[5]num. of digitized dr.times in segment (or module)
Char_tnNotFakeTracksNumber of tracks with non fake contribution
UChar_tnTimes[5]number of times from each track
Short_tnTracksnumber of tracks in the list of tracks
UShort_t*HMdcCellGroup::pLayer!pointer to layer information.
Float_tHMdcSeg::phiazimuthal angle phi in sector coordinate sys. [radian]
Float_tHMdcSeg::rr coordinate in sector coordinate sys. [mm]
Float_tHMdcSeg::rPrimer coordinate wrt axis centered on target position
Int_tstatusstatus of seg. (e.g. 1 if ok)
Float_tHMdcSeg::thetapolar angle theta in sector coordinate sys. [radian]
UChar_ttrackStatus[5]
Short_tHMdcSeg::x1x1,y1 - cross point of the segment line with first mdc layer (in sec.coor.sys.)
Short_tHMdcSeg::x2x2,y2 - cross point of the segment line with last mdc layer (in sec.coor.sys.)
Short_tHMdcSeg::y1Convert to mm: Float_t(x1)*0.1; Float_t(y1)*0.1;
Short_tHMdcSeg::y2Convert to mm: Float_t(x2)*0.1; Float_t(y2)*0.1;
Float_tHMdcSeg::zz cordinate in sector coordinate sys. [mm]
Float_tHMdcSeg::zPrimez cordinate wrt axis centered on target position

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

void clear()
 reset data members to default values
void clearSimInfo(void)
 reset data members to default values
void setNTracks(Int_t nTr, const Int_t* listTr, const UChar_t* nTm, const UChar_t* nDi = 0)
 copies nTr track numbers from array listTr to
 internal list of tracks array.
void addTrack(Int_t track, UChar_t nTm, UChar_t nDi = 0)
 add track info to internal list of tracks array.
Int_t calcNTracks(void)
 calculate number of tracks which
 contribute to the segment and fills the
 list of tracks array. Needs the
 event structure and Cal1Sim category
 to deliver results.
Int_t getNumNoiseWires(void)
void sortTrListByContr(void)
 Sorting track list "listTr" by "FakeContribution" flag.
 After sorting tracks with "not Fake" status will be moved to top of arrays.
void exchangeTrPos(Int_t t1, Int_t t2)
void print(void)
 prints the information about wires (number of wires,
 track numbers and how often a track has been contributing
 to the the segment) in segment to the screen.
void setTrackInf(const Int_t* lst, const Short_t* nTms, const UChar_t* nDTms, const UChar_t* tSt)
UChar_t getTrackStatus(Int_t n) const
Int_t getGoodTrack(Int_t i1, HMdcSegSim* outerSeg, Int_t nWiresCut = 5) const
 Function return geant track number if track this->listTracks[i1] marked as real
 in inner and outer segments
 and segments have at least nWiresCut wires from this track in each segment.
 Otherwise -  return 0.
 "this" object must be inner segment
 "outerSeg" object must be corresponding (not any one!) outer segment
Int_t getNextGoodTrack(Int_t& i1, HMdcSegSim* outerSeg, Int_t nWiresCut = 5) const
 Function searchs the good track (see. funct.getGoodTrack) starting from index i1.
 Function return geant track number and track index(i1) if searching was successful
 otherwise -  return 0.
 "this" object must be inner segment
 "outerSeg" object must be corresponding (not any one!) outer segment
Int_t findTrack(Int_t geantNum, Int_t nDigTimes = 0) const
 return index of geantTrack in listTracks[]
 return -1 if there no such track
Int_t getTrackIndex(Int_t tr) const
Bool_t resetFakeContributionFlag(void)
 For procedure of fake suppression only!
 For track listTracks[0] only.
Bool_t setFakeContributionFlag(void)
 For procedure of fake suppression only!
 For track listTracks[0] only.
Int_t getTrack(Int_t n) const
UChar_t getNTimes(Int_t n) const
UChar_t getNDigiTimes(Int_t n) const
void setNTracks(Int_t nTr, Char_t nNF, Char_t ioS)
HMdcSegSim(const HMdcSegSim& )
{clear();}
~HMdcSegSim(void)
{}
void setStatus(Int_t f)
{ status=f; }
void setNDigiTimes(Int_t n, UChar_t nt)
{if(indOk(n)) nDigiTimes[n] = nt;}
void setTrackStatus(Int_t n, UChar_t status)
{if(indOk(n)) trackStatus[n] = status;}
Int_t getStatus(void)
{return status;}
Int_t getNTracks(void)
{return nTracks;}
Char_t getNNotFakeTracks(void)
{return nNotFakeTracks;}
Bool_t isGntTrackOk(Int_t i) const
{return testBit(i,254);}
Bool_t isFakeContribution(Int_t i) const
{return !testBit(i,2);}
Bool_t isClFnLevelTooHigh(Int_t i) const
{return !testBit(i,4);}
Bool_t is1or2HitsNotRec(Int_t i) const
{return !testBit(i,8);}
Bool_t isSegNotRec(Int_t i) const
{return !testBit(i,16);}
Bool_t isTrackNotRec(Int_t i) const
{return !testBit(i,32);}
Bool_t isNoMeta(Int_t i) const
{return !testBit(i,64);}
Bool_t isGEANTBug(Int_t i) const
{return !testBit(i,128);}
Bool_t indOk(Int_t i) const
{return i>=0 && i<nTracks;}
UChar_t trackBits(Int_t i) const
{return indOk(i) ? trackStatus[i]:0;}
Bool_t testBit(Int_t i, UChar_t b) const
{return (trackBits(i)&b) == b;}