#include "hshowerpidtrackmatcher.h"
#include "hruntimedb.h"
#include "hevent.h"
#include "hspectrometer.h"
#include "hdetector.h"
#include "hshowerdetector.h"
#include "hcategory.h"
#include "hmatrixcatiter.h"
#include "hlocation.h"
#include "hshowerpid.h"
#include "hshowertrack.h"
#include "hshowerpidtrack.h"
#include "hdebug.h"
#include "hades.h"
#include "hiterator.h"
#include "showerdef.h"
ClassImp(HShowerPIDTrackMatcher)
HShowerPIDTrackMatcher::HShowerPIDTrackMatcher(const Text_t *name,const Text_t *title) :
HReconstructor(name,title)
{
fPIDIter=NULL;
fTrackIter=NULL;
m_zeroLoc.set(0);
}
HShowerPIDTrackMatcher::HShowerPIDTrackMatcher()
{
fPIDIter=NULL;
fTrackIter=NULL;
m_zeroLoc.set(0);
}
HShowerPIDTrackMatcher::~HShowerPIDTrackMatcher(void) {
if (fPIDIter) delete fPIDIter;
if (fTrackIter) delete fTrackIter;
}
Bool_t HShowerPIDTrackMatcher::init() {
printf("initialization of shower pid-track matcher\n");
HShowerDetector *pShowerDet = (HShowerDetector*)gHades->getSetup()
->getDetector("Shower");
m_pTrackCat=gHades->getCurrentEvent()->getCategory(catShowerTrack);
if (!m_pTrackCat) {
m_pTrackCat=pShowerDet->buildCategory(catShowerTrack);
if (!m_pTrackCat) return kFALSE;
else gHades->getCurrentEvent()
->addCategory(catShowerTrack, m_pTrackCat, "Shower");
}
m_pPIDCat=gHades->getCurrentEvent()->getCategory(catShowerPID);
if (!m_pPIDCat) {
m_pPIDCat=pShowerDet->buildCategory(catShowerPID);
if (!m_pPIDCat) return kFALSE;
else gHades->getCurrentEvent()
->addCategory(catShowerPID, m_pPIDCat, "Shower");
}
m_pPIDTrackCat=gHades->getCurrentEvent()->getCategory(catShowerPIDTrack);
if (!m_pPIDTrackCat) {
m_pPIDTrackCat=pShowerDet->buildCategory(catShowerPIDTrack);
if (!m_pPIDTrackCat) return kFALSE;
else gHades->getCurrentEvent()
->addCategory(catShowerPIDTrack, m_pPIDTrackCat, "Shower");
}
fPIDIter=(HIterator*)m_pPIDCat->MakeIterator();
fTrackIter=(HIterator*)m_pTrackCat->MakeIterator();
return kTRUE;
}
Bool_t HShowerPIDTrackMatcher::finalize(void) {
return kTRUE;
}
void HShowerPIDTrackMatcher::addPIDTrack(HShowerPID* pPID,
HShowerTrack* pTrack) {
HShowerPIDTrack *pPIDTrack;
pPIDTrack=(HShowerPIDTrack *)m_pPIDTrackCat->getNewSlot(m_zeroLoc);
if (pPIDTrack!=NULL) {
pPIDTrack=new(pPIDTrack) HShowerPIDTrack;
*pPIDTrack = *pPID;
pPIDTrack->setTrack(pTrack->getTrack());
}
}
Int_t HShowerPIDTrackMatcher::execute()
{
HShowerPID *pPID;
HShowerTrack *pTrack;
fPIDIter->Reset();
fTrackIter->Reset();
pTrack = (HShowerTrack *)fTrackIter->Next();
while((pPID = (HShowerPID*)fPIDIter->Next())) {
do {
if (pTrack && pPID->getAddress()==pTrack->getAddress()) {
addPIDTrack(pPID, pTrack);
break;
}
}
while((pTrack = (HShowerTrack *)fTrackIter->Next())) ;
while((pTrack = (HShowerTrack *)fTrackIter->Next())) {
if (pPID->getAddress()==pTrack->getAddress()) {
addPIDTrack(pPID, pTrack);
} else break;
}
}
return 0;
}
hshowerpidtrackmatcher.cc:1 hshowerpidtrackmatcher.cc:2 hshowerpidtrackmatcher.cc:3 hshowerpidtrackmatcher.cc:4 hshowerpidtrackmatcher.cc:5 hshowerpidtrackmatcher.cc:6 hshowerpidtrackmatcher.cc:7 hshowerpidtrackmatcher.cc:8 hshowerpidtrackmatcher.cc:9 hshowerpidtrackmatcher.cc:10 hshowerpidtrackmatcher.cc:11 hshowerpidtrackmatcher.cc:12 hshowerpidtrackmatcher.cc:13 hshowerpidtrackmatcher.cc:14 hshowerpidtrackmatcher.cc:15 hshowerpidtrackmatcher.cc:16 hshowerpidtrackmatcher.cc:17 hshowerpidtrackmatcher.cc:18 hshowerpidtrackmatcher.cc:19 hshowerpidtrackmatcher.cc:20 hshowerpidtrackmatcher.cc:21 hshowerpidtrackmatcher.cc:22 hshowerpidtrackmatcher.cc:23 hshowerpidtrackmatcher.cc:24 hshowerpidtrackmatcher.cc:25 hshowerpidtrackmatcher.cc:26 hshowerpidtrackmatcher.cc:27 hshowerpidtrackmatcher.cc:28 hshowerpidtrackmatcher.cc:29 hshowerpidtrackmatcher.cc:30 hshowerpidtrackmatcher.cc:31 hshowerpidtrackmatcher.cc:32 hshowerpidtrackmatcher.cc:33 hshowerpidtrackmatcher.cc:34 hshowerpidtrackmatcher.cc:35 hshowerpidtrackmatcher.cc:36 hshowerpidtrackmatcher.cc:37 hshowerpidtrackmatcher.cc:38 hshowerpidtrackmatcher.cc:39 hshowerpidtrackmatcher.cc:40 hshowerpidtrackmatcher.cc:41 hshowerpidtrackmatcher.cc:42 hshowerpidtrackmatcher.cc:43 hshowerpidtrackmatcher.cc:44 hshowerpidtrackmatcher.cc:45 hshowerpidtrackmatcher.cc:46 hshowerpidtrackmatcher.cc:47 hshowerpidtrackmatcher.cc:48 hshowerpidtrackmatcher.cc:49 hshowerpidtrackmatcher.cc:50 hshowerpidtrackmatcher.cc:51 hshowerpidtrackmatcher.cc:52 hshowerpidtrackmatcher.cc:53 hshowerpidtrackmatcher.cc:54 hshowerpidtrackmatcher.cc:55 hshowerpidtrackmatcher.cc:56 hshowerpidtrackmatcher.cc:57 hshowerpidtrackmatcher.cc:58 hshowerpidtrackmatcher.cc:59 hshowerpidtrackmatcher.cc:60 hshowerpidtrackmatcher.cc:61 hshowerpidtrackmatcher.cc:62 hshowerpidtrackmatcher.cc:63 hshowerpidtrackmatcher.cc:64 hshowerpidtrackmatcher.cc:65 hshowerpidtrackmatcher.cc:66 hshowerpidtrackmatcher.cc:67 hshowerpidtrackmatcher.cc:68 hshowerpidtrackmatcher.cc:69 hshowerpidtrackmatcher.cc:70 hshowerpidtrackmatcher.cc:71 hshowerpidtrackmatcher.cc:72 hshowerpidtrackmatcher.cc:73 hshowerpidtrackmatcher.cc:74 hshowerpidtrackmatcher.cc:75 hshowerpidtrackmatcher.cc:76 hshowerpidtrackmatcher.cc:77 hshowerpidtrackmatcher.cc:78 hshowerpidtrackmatcher.cc:79 hshowerpidtrackmatcher.cc:80 hshowerpidtrackmatcher.cc:81 hshowerpidtrackmatcher.cc:82 hshowerpidtrackmatcher.cc:83 hshowerpidtrackmatcher.cc:84 hshowerpidtrackmatcher.cc:85 hshowerpidtrackmatcher.cc:86 hshowerpidtrackmatcher.cc:87 hshowerpidtrackmatcher.cc:88 hshowerpidtrackmatcher.cc:89 hshowerpidtrackmatcher.cc:90 hshowerpidtrackmatcher.cc:91 hshowerpidtrackmatcher.cc:92 hshowerpidtrackmatcher.cc:93 hshowerpidtrackmatcher.cc:94 hshowerpidtrackmatcher.cc:95 hshowerpidtrackmatcher.cc:96 hshowerpidtrackmatcher.cc:97 hshowerpidtrackmatcher.cc:98 hshowerpidtrackmatcher.cc:99 hshowerpidtrackmatcher.cc:100 hshowerpidtrackmatcher.cc:101 hshowerpidtrackmatcher.cc:102 hshowerpidtrackmatcher.cc:103 hshowerpidtrackmatcher.cc:104 hshowerpidtrackmatcher.cc:105 hshowerpidtrackmatcher.cc:106 hshowerpidtrackmatcher.cc:107 hshowerpidtrackmatcher.cc:108 hshowerpidtrackmatcher.cc:109 hshowerpidtrackmatcher.cc:110 hshowerpidtrackmatcher.cc:111 hshowerpidtrackmatcher.cc:112 hshowerpidtrackmatcher.cc:113 hshowerpidtrackmatcher.cc:114 hshowerpidtrackmatcher.cc:115 hshowerpidtrackmatcher.cc:116 hshowerpidtrackmatcher.cc:117 hshowerpidtrackmatcher.cc:118 hshowerpidtrackmatcher.cc:119 hshowerpidtrackmatcher.cc:120 hshowerpidtrackmatcher.cc:121 hshowerpidtrackmatcher.cc:122 hshowerpidtrackmatcher.cc:123 hshowerpidtrackmatcher.cc:124 hshowerpidtrackmatcher.cc:125 hshowerpidtrackmatcher.cc:126 hshowerpidtrackmatcher.cc:127 hshowerpidtrackmatcher.cc:128 hshowerpidtrackmatcher.cc:129 hshowerpidtrackmatcher.cc:130 hshowerpidtrackmatcher.cc:131 hshowerpidtrackmatcher.cc:132 hshowerpidtrackmatcher.cc:133 hshowerpidtrackmatcher.cc:134 hshowerpidtrackmatcher.cc:135 hshowerpidtrackmatcher.cc:136 hshowerpidtrackmatcher.cc:137 hshowerpidtrackmatcher.cc:138 hshowerpidtrackmatcher.cc:139 hshowerpidtrackmatcher.cc:140 hshowerpidtrackmatcher.cc:141 hshowerpidtrackmatcher.cc:142 hshowerpidtrackmatcher.cc:143 hshowerpidtrackmatcher.cc:144 hshowerpidtrackmatcher.cc:145 hshowerpidtrackmatcher.cc:146 hshowerpidtrackmatcher.cc:147 hshowerpidtrackmatcher.cc:148 hshowerpidtrackmatcher.cc:149 hshowerpidtrackmatcher.cc:150 hshowerpidtrackmatcher.cc:151 hshowerpidtrackmatcher.cc:152 hshowerpidtrackmatcher.cc:153 hshowerpidtrackmatcher.cc:154 hshowerpidtrackmatcher.cc:155