ROOT logo
HYDRA - THE HADES ANALYSIS PACKAGE » UTIL » HFlexFiller

class HFlexFiller: public HReconstructor

_HADES_CLASS_DESCRIPTION



 HFlexFiller

 This HReconstructor allows the user to plugin a private fill function
 defined in a macro into the Hades eventloop with full access to all data levels.
 The user can fill the category of HFlex objects.

 The user can provide his own selection fill via
 setUserFill(Int_t (*function)(HHistMap*,TObjArray* ),HHistMap* hM=0,TObjArray* params=0,Bool_t createMap=kTRUE)
 Parameters for the function can be passed via the TObjArray from the macro.
 Histogram pointers can be passed by HHistMap
 If the pointers are NULL they are simply ignored.


 example:


Int_t fillFlex(HHistMap* hM=0,TObjArray* pars=0){


    HCategory* candCat  = (HCategory*)HCategoryManager::getCategory(catParticleCand ,kTRUE ,"catParticleCand");
    HCategory* flexCat  = (HCategory*)HCategoryManager::getCategory(catFlex         ,kTRUE ,"catFlex");

    if(!flexCat) { cout<<"NO FlexCat!"<<endl; }
    if(!candCat) { cout<<"NO candCat!"<<endl; }

    if(candCat&&flexCat)
    {
      HLocation loc; // dummy loc object
	HFlex fl;
	fl.addVars("candInd=-1","chi2=-1");  // some variables  + init values

	Int_t n = candCat->getEntries();
	for(Int_t i=0; i < n; i++){

	    HParticleCand* cand = HCategoryManager::getObject(cand,candCat,i);
	    if(cand){

		Int_t   ind  = cand->getIndex();
                Float_t chi2 = cand->getChi2();
                HFlex* flex = 0;
                Int_t index;

		flex = (HFlex*) flexCat->getNewSlot(loc,&index);
       	if(flex){
		    flex = new (flex) HFlex(fl);

		    flex->setI("candInd",ind);
                    flex->setD("chi2"   ,chi2);

		}

		if(hM){
                  if(hM->get("chi2")) hM->get("chi2")->Fill(chi2);
		}

	    }

	} // end loop candidates


   }
    return 0;
}


 int dst(){

    .... hades dst macro....



    HHistMap hM("testHists.root");                              // set output file for hists
    hM.addHist(new TH1F("chi2","chi2",1000,0,1000),"tracking"); // hist will be written to directory "tracking"


    HFlexFiller* flexfiller = new HFlexFiller("FlexFiller","FlexFiller");
    flexfiller->setUserFill(fillFlex,&hM);                      // connect your private function





    // add recontructor to the end of the tasklist
    masterTaskSet->add(flexfiller);                             // connect the filler


    gHades->init();                                             // init params etc
    gHades->eventLoop(nEvents,startEvt);                        // loop over events. the function will called for each event

    hM.writeHists();                                            // store the hists

    delete gHades;
 }


Function Members (Methods)

public:
HFlexFiller()
HFlexFiller(const Text_t* name, const Text_t* title)
virtual~HFlexFiller()
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()
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)
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(ostream& 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)
voidsetUserFill(Int_t (*)(HHistMap*,TObjArray*) function, HHistMap* histmap = 0, TObjArray* pars = 0, Bool_t makeCat = kTRUE)
virtual voidShowMembers(TMemberInspector&)
virtual Int_tTNamed::Sizeof() const
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:
voidclear()
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidTObject::MakeZombie()

Data Members

protected:
Bool_tcreateCat
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
HHistMap*hM
Bool_tHTask::isConnected
Bool_tHTask::isInitialised
Bool_tHTask::manual
HTask*HTask::owner
voidpUserFill! user provided function pointer to fill the HFlex Category
TObjArray*parameters

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

HFlexFiller(void)
HFlexFiller(const Text_t* name, const Text_t* title)
~HFlexFiller(void)
void clear()
Bool_t init(void)
 create the catFlex category if needed
Int_t execute(void)
 call the user funcion once per event
Bool_t finalize(void)
void setUserFill(Int_t (*)(HHistMap*,TObjArray*) function, HHistMap* histmap = 0, TObjArray* pars = 0, Bool_t makeCat = kTRUE)