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

class HParticleT0Reco: public HReconstructor

_HADES_CLASS_DESCRIPTION

*-- AUTHOR : G. Kornakov

 HParticleT0Reco

 Reconstructor to recalulate the T0 form the reconstructed particle
 to increase the time resolution. By default T0 is calulated form all particles
 flagged as kIsUsed. The user has to take care that enough used particles
 are avalilable. As standard hadrons and leptons are flagged. As alternative
 all candidates with fitted inner/outer segment,RKchi2<1000,MetaHit and beta!=-1
 can be used when setUseFlaggedCandidates(kFALSE) is used. It is assumed
 that metaQA normalization , momentum correction for systematics and path length
 correction is applied before (HParticleCandFiller).

 Particles with id  2, 3 ( e+, e-) (without ues of RICH/SHOWER)
                    5, 6 (mu+,mu-)
                    8, 9 (pi+,pi-)
                   11,12 (K+ , K-)
                      14 (p)
                      45 (d)
                      46 (t)
                      49 (he3)

 are identified by beta vs momentum and beta vs MDC dedx simultaniously. Each
 Track is tested for all hyposisis. The PID with smallest deviation from
 theoretical curves is chosen. beta vs mom is weighted higher of beta vs dedx.
 The procedure is performed in 2 steps. In the first iteration a rough temporay ID is
 performed to retrieve T0. After correction of TO in the second iteration the PIDs
 are asigned. Circular buffers for the mean and sigmas of the different START
 strips are filled to improve resolution and to take care of variation with time.
 Particle ID takes into account the errors of time measurement.

 USAGE:

  HParticleT0Reco t0Reco("apr12");
  t0Reco.setUseFlaggedCandidates(kTRUE);

  // 2 possible ways :
  a. As Reconstructor add it to standard task list
  b. With HLoop :

     before eventLoop :  t0Reco.init();
     inside eventloop :  t0Reco.execute();



Function Members (Methods)

public:
HParticleT0Reco(const Text_t* name = "ParticleT0Reco", const Text_t* title = "ParticleT0Reco", const Text_t* beamtime = "apr12")
virtual~HParticleT0Reco()
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)
voidsetUseFlaggedCandidates(Bool_t use = 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:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidTObject::MakeZombie()

Data Members

protected:
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
Bool_tHTask::isConnected
Bool_tHTask::isInitialised
Bool_tHTask::manual
HTask*HTask::owner
private:
HParticleT0Reco::buffersbuffall circular buffers
Double_tcspeed of light
HCategory*candCat
HCategory*catStart
HCategory*catStartcal
HEnergyLossCorrPar*eLoss
vector<tofvalues>*eventMETA[2]helper array to switch systems
vector<tofvalues>eventRPCper event values of all candidates RPC
vector<tofvalues>eventTOFper event values of all candidates TOF
HEventHeader*fEvHeader
Bool_tfUseFlaggeduse flagged kIsUsed candidates for t0 reco (default=kTRUE)
Bool_tfisEmbeddingembedding mode
Bool_tfisSimulationfor simulation START has to be treated different
map<Int_t,Int_t>mIdToIndexall known ids
map<Int_t,momCut>mMomCut1Sys[2]mom cuts iteration 1 per sys
map<Int_t,momCut>mMomCut2Sys[2]mom cuts iteration 2 per sys
TStringrunbeamtime
HParticleT0Reco::startvaluesstart[2][16]values per start module:strip
Float_tt0rpc
Float_tt0startcont
Float_tt0startconterr
Float_tt0tof
vector<Int_t>vparticleall known ids

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

HParticleT0Reco(const Text_t* name = "ParticleT0Reco", const Text_t* title = "ParticleT0Reco", const Text_t* beamtime = "apr12")
~HParticleT0Reco()
Int_t execute()
Bool_t init()
void fillMETA(Float_t t0, Float_t err, Int_t sys)
void fillBuffer()
void fillCorrections()
Float_t getOnlineMeanQ(Int_t mod, Int_t strip)
Float_t getOnlineStripCorrection(Int_t mod, Int_t strip)
Bool_t isEmbedded(HParticleCand* pCand)
void fill()
 This function fills the particle buffers for TOF and RPC.
 It suppose that the meta matching was already recalculated!!!!!
 It uses tracks with some minimum quality criteria.
 Also it does a mild cut on vertex : dist>(1./mom)*1200.+10.
void setPIDs()
 Function which loops over candidates onces corrected by T0 and sets the best hypo just to the best traces.
void correctBeta()
void calculateStartT0Cont()
Float_t getBeta(HParticleCand* pCand)
Float_t getT0(Int_t sys)
Float_t getT0Err(Int_t sys)
void initWalkHists()
 hist are store as arrays:

    void readHistWalk(){

    TFile* fileWC = new TFile("walk_par_histos3.root","READ");

    TH1D* h [2][16];
    TH1D* he[2][16];

    TArrayD  astartdt [2][16];
    TArrayD  astartsdt[2][16];

    TArrayD  astartdtback [2][16];
    TArrayD  astartsdtback[2][16];

    for(Int_t i=0;i<2;i++) {
	for(Int_t j=0;j<16;j++) {
	    h [i][j] = (TH1D*)fileWC->Get(Form("h_q_maxdt_mod%i_strip%i",i,j));
	    he[i][j] = (TH1D*)fileWC->Get(Form("h_q_sdt_mod%i_strip%i"  ,i,j));
	    HHistConverter::fillArray(h [i][j],astartdt [i][j],Form("h_q_maxdt_mod%i_strip%i",i,j),10,10, kFALSE);
	    HHistConverter::fillArray(he[i][j],astartsdt[i][j],Form("h_q_sdt_mod%i_strip%i"  ,i,j),10,10, kFALSE);
	}
    }




    ofstream out;
    out.open("myhists.txt");

    for(Int_t i=0;i<2;i++) {
	for(Int_t j=0;j<16;j++) {
	    HHistConverter::writeArray(out,h [i][j]->GetName(),astartdt [i][j],10);
	}
    }
    for(Int_t i=0;i<2;i++) {
	for(Int_t j=0;j<16;j++) {
	    HHistConverter::writeArray(out,he[i][j]->GetName(),astartsdt[i][j],10);
	}
    }
    out.close();


    out.open("myhists_array.txt");

    Int_t imax = 2;
    Int_t jmax = 16;
    Int_t kmax = astartdt[0][0].GetSize();

    out<<Form("Double_t astartdt[%i][%i][%i]={ ",imax,jmax,kmax);
    for(Int_t i=0;i<imax;i++) {
	out<<"{ ";
	for(Int_t j=0;j<jmax;j++) {
	    if(j>0)out<<endl;
	    out<<"{ ";
	    for(Int_t k=0;k<kmax;k++) {
		if(k<kmax-1) out<<astartdt[i][j][k]<<" , ";
       	else         out<<astartdt[i][j][k];
		if(k>0&&k<kmax&&k%10==0) out<<endl;
	    }
	    if(j<jmax-1) out<<"} , ";
            else         out<<"} ";
	}
	if(i<imax-1)out<<"} , "<<endl;
        else        out<<"} ";
    }
    out<<"};"<<endl;

    out<<endl;

    out<<Form("Double_t astartsdt[%i][%i][%i]={ ",imax,jmax,kmax);
    for(Int_t i=0;i<imax;i++) {
	out<<"{ ";
	for(Int_t j=0;j<jmax;j++) {
	    if(j>0)out<<endl;
	    out<<"{ ";
	    for(Int_t k=0;k<kmax;k++) {
		if(k<kmax-1) out<<astartsdt[i][j][k]<<" , ";
		else         out<<astartsdt[i][j][k];
       	if(k>0&&k<kmax&&k%10==0) out<<endl;
	    }
	    if(j<jmax-1) out<<"} , ";
            else         out<<"} ";
	}
	if(i<imax-1)out<<"} , "<<endl;
        else        out<<"} ";
    }
    out<<"};"<<endl;

    out.close();


}
Bool_t finalize()
{ return kTRUE;}
void setUseFlaggedCandidates(Bool_t use = kTRUE)
{ fUseFlagged = use;}