_HADES_CLASS_DESCRIPTION HParticleMetamatcher usage : Int_t loopDST_task( TString infileList="/lustre/hebe/hades/dst/mar19/gen2/ag158ag/3200A/083/root/be1908311041501.hld_dst_mar19.root", TString outfile="test.root",Int_t nEvents=50) { HLoop loop(kTRUE); //------------------------------------------------- if(1){ TString beamtime="mar19"; Int_t mdcMods[6][4]= { {1,1,1,1}, {1,1,1,1}, {1,1,1,1}, {1,1,1,1}, {1,1,1,1}, {1,1,1,1} }; TString asciiParFile = ""; TString rootParFile = "/cvmfs/hades.gsi.de/param/real/mar19/allParam_Mar19_gen2_18102019.root"; TString paramSource = "root"; // root, ascii, oracle TString paramrelease = "MAR19_dst_gen3"; // now, APR12_gen2_dst APR12_gen5_dst HDst::setupSpectrometer(beamtime,mdcMods,"rich,mdc,tof,rpc,emc,wall,start,tbox"); HDst::setupParameterSources(paramSource,asciiParFile,rootParFile,paramrelease); // now, APR12_gen2_dst } //------------------------------------------------- Bool_t ret =kFALSE; if(infileList.Contains(",")){ ret = loop.addMultFiles(infileList); // file1,file2,file3 } else{ ret = loop.addFiles(infileList); // myroot*.root } if(ret == 0) { cout<<"READBACK: ERROR : cannot find inputfiles : "<<infileList.Data()<<endl; return 1; } if(!loop.setInput("")) { // all input categories cout<<"READBACK: ERROR : cannot read input !"<<endl; exit(1); } // read all categories loop.printCategories(); loop.printChain(); HCategory* candCat = (HCategory*)HCategoryManager::getCategory(catParticleCand); HCategory* evtInfoCat = (HCategory*)HCategoryManager::getCategory(catParticleEvtInfo); //------------------------------------------------- // added for the task HTaskSet *masterTaskSet = gHades->getTaskSet("all"); HParticleMetaMatcher* matcher = new HParticleMetaMatcher(); matcher->setDebug(); // print infos to screen masterTaskSet->add(matcher); //------------------------------------------------- Int_t entries = loop.getEntries(); if(nEvents < entries && nEvents >= 0 ) entries = nEvents; for (Int_t i = 0; i < entries; i++) { Int_t nbytes = loop.nextEvent(i); // get next event. categories will be cleared before if(nbytes <= 0) { cout<<nbytes<<endl; break; } // last event reached if(i%1000 == 0) cout<<"event "<<i<<endl; HParticleEvtInfo* evtInfo=0; evtInfo = HCategoryManager::getObject(evtInfo,evtInfoCat,0 ); if(evtInfo&&!evtInfo->isGoodEvent(Particle::kGoodTRIGGER| // standard event selection apr12 Particle::kGoodVertexClust| Particle::kGoodVertexCand| Particle::kGoodSTART| Particle::kNoPileUpSTART| Particle::kNoVETO| Particle::kGoodSTARTVETO| Particle::kGoodSTARTMETA )) continue; if(candCat){ Int_t size = candCat->getEntries(); HParticleCand* cand=0; for(Int_t j = 0; j < size; j++) { cand = HCategoryManager::getObject(cand,candCat,j); if(cand) { if(!cand->isFlagBit(kIsUsed)) { continue; } // skip particles rejected by HParticleTrackSorter if(cand->isRpcClstUsed()){ const HRpcCluster* rpc = matcher->recalcRpc(cand); // reconstruct the rpchit from tracking +rk dx dy Int_t s,col0,col1,cell0,cell1; HGeomVector hit0,hit1; matcher->predictRpcCell(cand,hit0,hit1,s,col0,cell0,col1,cell1); // which rpc cell should this track fire? } if(0&&(cand->isTofClstUsed() || cand->isTofHitUsed()) ){ const HTofCluster* tof = matcher->recalcTof(cand); Int_t s,mod0,mod1,cell0,cell1; HGeomVector hit0,hit1; matcher->predictTofCell(cand,hit0,hit1,s,mod0,cell0,mod1,cell1); // which Tof cell should this track fire? } if(0&&cand->getEmcInd()>-1){ const HEmcCluster* emc = matcher->recalcEmc(cand); Int_t s,pos,cell; HGeomVector hit; vector<Int_t> vcells; matcher->predictEmcCell(cand,hit,s,pos,cell); // which emc cell should this track fire? } } } // end cand loop } // end cand cat } // end eventloop //------------------------------------------------- // added for the task if(gHades)gHades->finalizeTasks(); //------------------------------------------------- delete gHades; return 0; }
HParticleMetaMatcher(const Text_t* name = "HParticleMetaMatcher", const Text_t* title = "HParticleMetaMatcher") | |
virtual | ~HParticleMetaMatcher() |
void | TObject::AbstractMethod(const char* method) const |
virtual void | TObject::AppendPad(Option_t* option = "") |
virtual void | HReconstructor::Browse(TBrowser* b) |
static TClass* | Class() |
virtual const char* | TObject::ClassName() const |
virtual void | TNamed::Clear(Option_t* option = "") |
virtual TObject* | TNamed::Clone(const char* newname = "") const |
virtual Int_t | TNamed::Compare(const TObject* obj) const |
virtual Bool_t | HReconstructor::connectTask(HTask* task, Int_t n = 0) |
virtual void | TNamed::Copy(TObject& named) const |
virtual void | TObject::Delete(Option_t* option = "")MENU |
virtual Int_t | TObject::DistancetoPrimitive(Int_t px, Int_t py) |
virtual void | TObject::Draw(Option_t* option = "") |
virtual void | TObject::DrawClass() constMENU |
virtual TObject* | TObject::DrawClone(Option_t* option = "") constMENU |
virtual void | TObject::Dump() constMENU |
virtual void | TObject::Error(const char* method, const char* msgfmt) const |
virtual Int_t | execute() |
virtual void | TObject::Execute(const char* method, const char* params, Int_t* error = 0) |
virtual void | TObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0) |
virtual void | TObject::ExecuteEvent(Int_t event, Int_t px, Int_t py) |
virtual void | TObject::Fatal(const char* method, const char* msgfmt) const |
virtual void | TNamed::FillBuffer(char*& buffer) |
virtual Bool_t | finalize() |
virtual TObject* | TObject::FindObject(const char* name) const |
virtual TObject* | TObject::FindObject(const TObject* obj) const |
virtual HTask* | HReconstructor::getComposite() |
virtual void | HReconstructor::getConnections() |
virtual Option_t* | TObject::GetDrawOption() const |
static Long_t | TObject::GetDtorOnly() |
void | getEmcCellArray(Int_t s, Int_t cell, vector<Int_t>& vcells) |
const HGeomVector* | getEmcCellGeom(Int_t s, Int_t cell) |
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_t | TObject::GetObjectStat() |
virtual Option_t* | TObject::GetOption() const |
virtual HTask* | HTask::getOwner() |
const HGeomVector* | getRpcCellGeom(Int_t s, Int_t col, Int_t cell) |
TObjArray | HReconstructor::getTable() |
virtual HTask* | HReconstructor::getTask(const Char_t* name) |
virtual const char* | TNamed::GetTitle() const |
const HGeomVector* | getTofCellGeom(Int_t s, Int_t mod, Int_t cell) |
const HGeomVector& | getTrackMetaLab() |
const HGeomVector& | getTrackMetaMod() |
const HGeomVector& | getTrackMetaSec() |
virtual UInt_t | TObject::GetUniqueID() const |
virtual Bool_t | TObject::HandleTimer(TTimer* timer) |
virtual ULong_t | TNamed::Hash() const |
virtual void | TObject::Info(const char* method, const char* msgfmt) const |
virtual Bool_t | TObject::InheritsFrom(const char* classname) const |
virtual Bool_t | TObject::InheritsFrom(const TClass* cl) const |
virtual Bool_t | init() |
virtual void | TObject::Inspect() constMENU |
void | TObject::InvertBit(UInt_t f) |
virtual TClass* | IsA() const |
virtual Bool_t | TObject::IsEqual(const TObject* obj) const |
virtual Bool_t | HReconstructor::IsFolder() const |
Bool_t | TObject::IsOnHeap() const |
virtual Bool_t | TNamed::IsSortable() const |
virtual void | HReconstructor::isTimed(Bool_t flag = kTRUE) |
Bool_t | TObject::IsZombie() const |
virtual void | TNamed::ls(Option_t* option = "") const |
void | TObject::MayNotUse(const char* method) const |
virtual HTask* | HReconstructor::next(Int_t& errCode) |
virtual Bool_t | TObject::Notify() |
void | TObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const |
static void | TObject::operator delete(void* ptr) |
static void | TObject::operator delete(void* ptr, void* vp) |
static void | TObject::operator delete[](void* ptr) |
static void | TObject::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 void | TObject::Paint(Option_t* option = "") |
virtual void | TObject::Pop() |
Bool_t | predictEmcCell(HParticleCand* cand, HGeomVector& hit, Int_t& s, Int_t& pos, Int_t& cell) |
Bool_t | predictRpcCell(HParticleCand* cand, HGeomVector& hit1, HGeomVector& hit2, Int_t& s, Int_t& col1, Int_t& cell1, Int_t& col2, Int_t& cell2) |
Bool_t | predictTofCell(HParticleCand* cand, HGeomVector& hit0, HGeomVector& hit1, Int_t& s, Int_t& mod0, Int_t& cell0, Int_t& mod1, Int_t& cell1) |
virtual void | TNamed::Print(Option_t* option = "") const |
virtual void | HReconstructor::printTimer() |
virtual Int_t | TObject::Read(const char* name) |
const HEmcCluster* | recalcEmc(HParticleCand* cand) |
const HRpcCluster* | recalcRpc(HParticleCand* cand) |
const HTofCluster* | recalcTof(HParticleCand* cand) |
virtual void | TObject::RecursiveRemove(TObject* obj) |
virtual Bool_t | reinit() |
void | TObject::ResetBit(UInt_t f) |
virtual void | HReconstructor::resetTimer() |
virtual void | TObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU |
virtual void | TObject::SavePrimitive(ostream& out, Option_t* option = "") |
void | HReconstructor::setActive(Bool_t state)MENU |
void | TObject::SetBit(UInt_t f) |
void | TObject::SetBit(UInt_t f, Bool_t set) |
virtual Bool_t | HTask::setConnections() |
void | setDebug(Bool_t debug = kTRUE) |
virtual void | TObject::SetDrawOption(Option_t* option = "")MENU |
static void | TObject::SetDtorOnly(void* obj) |
void | HTask::setManual() |
virtual void | TNamed::SetName(const char* name)MENU |
virtual void | TNamed::SetNameTitle(const char* name, const char* title) |
static void | TObject::SetObjectStat(Bool_t stat) |
virtual void | HTask::setOwner(HTask* atask) |
virtual void | TNamed::SetTitle(const char* title = "")MENU |
virtual void | TObject::SetUniqueID(UInt_t uid) |
virtual void | ShowMembers(TMemberInspector&) |
virtual Int_t | TNamed::Sizeof() const |
virtual void | Streamer(TBuffer&) |
void | StreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b) |
virtual void | TObject::SysError(const char* method, const char* msgfmt) const |
Bool_t | TObject::TestBit(UInt_t f) const |
Int_t | TObject::TestBits(UInt_t f) const |
virtual void | TObject::UseCurrentStyle() |
virtual void | TObject::Warning(const char* method, const char* msgfmt) const |
virtual Int_t | TObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) |
virtual Int_t | TObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const |
void | calcSegPoints(TVector3& p1, TVector3& p2, Double_t phiseg, Double_t thetaseg, Double_t roseg, Double_t zseg) |
virtual void | TObject::DoError(int level, const char* location, const char* fmt, va_list va) const |
Bool_t | findIntersectionLinePlane(TVector3& pointIntersect, const TVector3& pos, const TVector3& dir, const TVector3& planeCenter, const TVector3& planeNormal) |
Bool_t | isInEmcCell(HGeomVector& vmod, Int_t s, Int_t c) |
Bool_t | isInRpcCell(HGeomVector& vmod, Int_t s, Int_t col, Int_t c) |
Bool_t | isInTofCell(HGeomVector& vmod, Int_t s, Int_t col, Int_t c) |
void | TObject::MakeZombie() |
Bool_t | traceToMeta(const HParticleCand* cand, TVector3& metaHit, const TVector3& metaCenter, const TVector3& metaNorm) |
enum TObject::EStatusBits { | kCanDelete | |
kMustCleanup | ||
kObjInCanvas | ||
kIsReferenced | ||
kHasUUID | ||
kCannotPick | ||
kNoContextMenu | ||
kInvalidObject | ||
}; | ||
enum TObject::[unnamed] { | kIsOnHeap | |
kNotDeleted | ||
kZombie | ||
kBitMask | ||
kSingleKey | ||
kOverwrite | ||
kWriteDelete | ||
}; |
Float_t | DPlanesRpc | ! RPC displacement for collumns |
HGeomVector | cellEMC[6][163][4] | ! [sec][cell] 4points |
HGeomVector | cellRPC[6][6][31][4] | ! [sec][col][cell] 4points |
HGeomVector | cellTOF[6][8][8][4] | ! [sec][mod][cell] 4points |
TVector3 | centerVecEmc[6] | ! [sec] center vector on the Emc module in the sector coordinate system |
TVector3 | centerVecRpc[6][3] | ! [sec][plane col{0,2,4}, {1,3,5}, mid] center vector on the RPC module in the sector coordinate system |
TVector3 | centerVecTof[6][8] | ! [sec][mod] center vector on each Tof module in the sector coordinate system |
HEmcCluster | emccluster | ! |
Bool_t | HReconstructor::fActive | Active flag |
HCategory* | fCatEmcCluster | ! pointer to the Emc cluster category |
HCategory* | fCatRpcCluster | ! pointer to the Rpc cluster category. |
HCategory* | fCatTofCluster | ! pointer to the Tof cluster category |
HCategory* | fCatTofHit | ! pointer to the Tof hit category |
Bool_t | fDebug | ! switch print on/off |
HEmcGeomPar* | fEmcGeometry | ! Emc geometry |
TList* | HReconstructor::fHistograms | List of histograms generated by this reconstructor. |
Bool_t | HTask::fIsTimed | timer flag |
TString | TNamed::fName | object identifier |
TObjArray | HReconstructor::fOutputs | |
HRpcGeomPar* | fRpcGeometry | ! Rpc geometry |
TStopwatch | HReconstructor::fTimer | Task timer |
TString | TNamed::fTitle | object title |
HTofGeomPar* | fTofGeometry | ! TOF geometry |
Bool_t | HTask::isConnected | |
Bool_t | HTask::isInitialised | |
HGeomTransform | labSecTrans[6] | ! [sec] |
Bool_t | HTask::manual | |
HGeomTransform | modSecTransEmc[6] | ! [sec] |
HGeomTransform | modSecTransRpc[6] | ! [sec] |
HGeomTransform | modSecTransTof[6][8] | ! [sec][mod] |
TVector3 | normVecEmc[6] | ! [sec] normal vector on the Emc module in the sector coordinate system |
TVector3 | normVecRpc[6][3] | ! [sec][plane col{0,2,4}, {1,3,5}, mid] normal vector on the RPC module in the sector coordinate system |
TVector3 | normVecTof[6][8] | ! [sec][mod] normal vector on each Tof module in the sector coordinate system |
HTask* | HTask::owner | |
HRpcGeomCellPar* | pGeomCellPar | ! Rpc cell info |
HSpecGeomPar* | pSpecGeomPar | ! sector lab trans |
HRpcCluster | rpccluster | ! |
HTofCluster | tofcluster | ! |
HGeomVector | trackMetaLab | ! |
HGeomVector | trackMetaMod | ! |
HGeomVector | trackMetaSec | ! |
returns null pointer if s,col,cell are invalid returns HGeomVector* to first element of array of 4 HGeomVectors for the shape of the cell in mod sys
returns null pointer if s,mod,cell are invalid returns HGeomVector* to first element of array of 4 HGeomVectors for the shape of the cell in mod sys
returns null pointer if s,cell are invalid returns HGeomVector* to first element of array of 4 HGeomVectors for the shape of the cell in mod sys
in sector sys : calc p1 p2 points (not MDC Hit!) on MdcSeg
Finds the intersection point of a straight line with any plane. pointIntersect: the intersection point (return value). pos: a point on the straight line. dir: direction of the straight line. planeCenter: a point on the plane. planeNormal: normal vector of the plane.
calculate intersection of outer MdcSeg (RK) straightline with META plane in sector sys
check if vmodule (mod system) is inside cell (2D) Trapez p1---------------p2 b\ \ p0-------------p3 a checks if HGeomVector* vmodule
returns neighbour cell indices for a given cell in the order 0 1 2 3 4(cell) 5 6 7 8 into vcells (-1 if cell does not exist)
Get categories and coordinate transformations. Call this after HADES has been initialized.
returns HRpcCluster pointer to an object owned by HParticleMetaMatcher which has been reconstructed from an intersection of HParticleCand outer segment of Runge Kutta with the META detector plane. The original META hit position can be restorded using RK dx, dy from HParticleCand. Works for candidates which have cand->isRpcClstUsed() set. The hit point of RK on the META plane can be retrieved by calling const HGeomVector& getTrackMetaMod() const HGeomVector& getTrackMetaSec() const HGeomVector& getTrackMetaLab() directly after calling this function.
returns HTofCluster pointer to an object owned by HParticleMetaMatcher which has been reconstructed from an intersection of HParticleCand outer segment of Runge Kutta with the META detector plane. The original META hit position can be restorded using RK dx, dy from HParticleCand. Works for candidates which have cand->isTofClstUsed() or cand->isTofHitUsed() set. The hit point of RK on the META plane can be retrieved by calling const HGeomVector& getTrackMetaMod() const HGeomVector& getTrackMetaSec() const HGeomVector& getTrackMetaLab() directly after calling this function.
returns HEmcCluster pointer to an object owned by HParticleMetaMatcher which has been reconstructed from an intersection of HParticleCand outer segment of Runge Kutta with the META detector plane. The original META hit position can be restorded using RK dx dy from HParticleCand. Works for candidates which have cand->getEmcInd()!=-1 set. The hit point of RK on the META plane can be retrieved by calling const HGeomVector& getTrackMetaMod() const HGeomVector& getTrackMetaSec() const HGeomVector& getTrackMetaLab() directly after calling this function.
Reconstructs an intersection of HParticleCand outer segment of Runge Kutta with the META detector plane. 2 hits (hit0,hit2) on the Rpc planes of column (0,2,4) and (1,3,5). Possible hit RPC cells are returned by coordinates sector, (col0,cell0) (col1,cell1). colX and cellX are -1 if no cell has been hit on this plane. Works with all candidates which provide outer segments.
Reconstructs an intersection of HParticleCand outer segment of Runge Kutta with the META detector plane. 2 hits (hit0,hit2) on the TOF module planes cand be returned. Possible hit TOF cells are returned by coordinates sector, (mod0,cell0) (mod1,cell1). colX and cellX are -1 if no cell has been hit on this plane. The hit points will be 0,0,0 in this case. Works with all candidates which provide outer segments.
Reconstructs an intersection of HParticleCand outer segment of Runge Kutta with the META detector plane. 1 hit on the EMC plane can be returned. The possible hit cell returned by coordinates sector, pos (0-162) , cell (0,254). pos and cell are -1 if no cell has been hit on this plane. Works with all candidates which provide outer segments.