class HMdcVertexFind: public HReconstructor

_HADES_CLASS_DESCRIPTION

 HMdcVertexFind

   Vertex finder using weighted LSM with optional Tukey weights

 To use it in a macro just add

 taskset->add(new HMdcVertexFind("name","title",input_mode,tukey)

 where

 input_mode is one of HMdcVertexFind::kSegments or HMdcVertexFind::kHits.
 In the first case HMdcSeg objecst will be used as input (recomended for
 now) while in the secon HMdcHit objects will be used

 As for 'tukey' it can be kTRUE or kFALSE depending on if Tukey weights
 should be used in the minimization. For low multiplicity environments
 like C+C I would recomend kFALSE; at least until I have found better
 parameters for the Tukey weigths minimization.

  static void setRejectEmbeddedTracks(Bool_t reject = kTRUE){rejectEmbeddedTracks = reject;}
  static void setUseEventSeqNumber   (Bool_t use    = kTRUE){useEventSeqNumber    = use;   }
  static void setSkipNoVertex        (Bool_t skip   = kTRUE){doSkipNoVertex       = skip;  }

 For the track embedding the are several configurations possible using
 the above static member functions.
 MODE:
       1. THIS IS CLEARLY THE PREFERED METHOD IF ON NEEDS TO GET SIMULATED PARTICLES
          AT EXACTLY THE SAME VERTEX AS THE REAL DATA!
          READING vertex from HGeantKine objects (sim done with real vertices)
          In this mode (useEventSeqNumber == kTRUE (default)) the event sequence number
          of the real events which have been used to create the sim tracks with
          PLUTO will be stored in the HGeantKine::userVal of the particles. If the
          current event does not match the one from GEANT the event will be skipped as
          Long_t as the numbers match again.
       2. useEventSeqNumber == kFALSE. In this mode rejectEmbeddedTracks == kTRUE (default)
          segments which keep GEANT track numbers and more than one contributing track number
          will be skipped (minimize the influence of the embedded tracks to the vertex calculation).
          Anyway the vertex will never be exactly the same as the one from the real dsts. Eventually
          everything will go out of sync with the vertex of the sim input (if used real vertex with PLUTO)
          because an additional event will skipped.
          With rejectEmbeddedTracks == kFALSE all segments will be taken into account.
       3. With doSkipNoVertex == KTRUE (default : kFALSE) events without calculated vertex will not be skipped.
          This mode has only influence if MODE 1 is not used, because here the events will be skipped.


Function Members (Methods)

public:
HMdcVertexFind(const Text_t* name = "", const Text_t* title = "", HMdcVertexFind::EInputMode m = kSegments, Bool_t tukey = kFALSE)
virtual~HMdcVertexFind()
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()
Double_tgetEpsilon()
virtual const char*TObject::GetIconName() const
HMdcVertexFind::EInputModegetInputMode()
Int_tgetMaxIterations()
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
Double_tgetTukeyConstant()
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()
voidsetDebugMode(Bool_t flag)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidsetEpsilon(Double_t ep)
voidHTask::setManual()
voidsetMaxIterations(Int_t max)
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)
static voidsetRejectEmbeddedTracks(Bool_t reject = kTRUE)
static voidsetSkipNoVertex(Bool_t skip = kTRUE)
virtual voidTNamed::SetTitle(const char* title = "")MENU
voidsetTukeyConstant(Double_t d)
virtual voidTObject::SetUniqueID(UInt_t uid)
static voidsetUseEventSeqNumber(Bool_t use = kTRUE)
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()
voiduseTukeyWeights(Bool_t flag)
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_thasConverged(HGeomVector& v, HGeomVector& oldV)
voidinitVars()
voidTObject::MakeZombie()
Bool_tpointsToTarget(const HGeomVector& r, HGeomVector& alpha, Int_t sector, Int_t module)
Bool_treadHits(HGeomVector& estimate)
Bool_treadSegments(HGeomVector& estimate)
voidtransform(HMdcSeg* data, HGeomVector& r, HGeomVector& alpha)

Data Members

public:
enum EInputMode { kSegments
kHits
};
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
protected:
static Bool_tdoSkipNoVertex! skip events if no vertex is calculated
Bool_tHReconstructor::fActiveActive flag
TClonesArrayfAlpha! alpha vector for each track
TNtuple*fControl!
Bool_tfDebugModeDebug mode on/off
Double_tfEpsilonUsed for convergence criterium
HGeomVertexFitfFitter!
HMdcGeomPar*fGeometry! Geometry transformation
TList*HReconstructor::fHistogramsList of histograms generated by this reconstructor.
HCategory*fInput! Geant MDC data
HMdcVertexFind::EInputModefInputModeRead segments or hits?
Bool_tHTask::fIsTimedtimer flag
HIterator*fIter!
Int_tfMaxIterationsMaximum number of iterations
TStringTNamed::fNameobject identifier
TObjArrayHReconstructor::fOutputs
TClonesArrayfPos! r for each track
HSpecGeomPar*fSpecGeometry! Spectrometer's geometry
TStopwatchHReconstructor::fTimerTask timer
TStringTNamed::fTitleobject title
Double_tfTukeyConstValue used as Tukey constant
Bool_tfUsingTukeyFlag turning on and off Tukey weights
TIterator*geantKineIter! Iterator over GeantKine category
Bool_tHTask::isConnected
Bool_tisEmbedding! kTRUE if is in embedding mode
Bool_tHTask::isInitialised
Bool_tHTask::manual
HTask*HTask::owner
static Bool_trejectEmbeddedTracks! = kTRUE (default) reject embedded tracks from vertex calculation
static Bool_tuseEventSeqNumber! use the eventSeq Number decide of event skipping in embedding mode

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

HMdcVertexFind(const Text_t* name = "", const Text_t* title = "", HMdcVertexFind::EInputMode m = kSegments, Bool_t tukey = kFALSE)
~HMdcVertexFind(void)
void initVars(void)
Bool_t init(void)
Bool_t finalize(void)
Bool_t pointsToTarget(const HGeomVector& r, HGeomVector& alpha, Int_t sector, Int_t module)
Gilipollas el HMdcSeg ya tiene esta informacion.....
void transform(HMdcSeg* data, HGeomVector& r, HGeomVector& alpha)
Calculates position and direction vector for a HMdcHit
Bool_t readSegments(HGeomVector& estimate)
Bool_t readHits(HGeomVector& estimate)
Int_t execute(void)
Bool_t hasConverged(HGeomVector& v, HGeomVector& oldV)
void useTukeyWeights(Bool_t flag)
{ fUsingTukey = flag; }
void setDebugMode(Bool_t flag)
{ fDebugMode = flag; }
void setTukeyConstant(Double_t d)
{ fTukeyConst = d; }
void setMaxIterations(Int_t max)
{ fMaxIterations = max; }
void setEpsilon(Double_t ep)
{ fEpsilon = ep; }
EInputMode getInputMode(void)
{ return fInputMode; }
Double_t getTukeyConstant(void)
{ return fTukeyConst; }
Int_t getMaxIterations(void)
{ return fMaxIterations; }
Double_t getEpsilon(void)
{ return fEpsilon; }
void setRejectEmbeddedTracks(Bool_t reject = kTRUE)
{rejectEmbeddedTracks = reject;}
void setUseEventSeqNumber(Bool_t use = kTRUE)
{useEventSeqNumber = use; }
void setSkipNoVertex(Bool_t skip = kTRUE)
{doSkipNoVertex = skip; }

Last change: Sat May 22 13:04:20 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.