#include "hshowerhittrackmatcher.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 "hshowerhit.h"
#include "hshowertrack.h"
#include "hshowerhitsim.h"
#include "hdebug.h"
#include "hades.h"
#include "hiterator.h"
#include "showerdef.h"
#include <map>
#include <vector>
#include <iostream>
using namespace std;
ClassImp(HShowerHitTrackMatcher)
HShowerHitTrackMatcher::HShowerHitTrackMatcher(const Text_t *name,const Text_t *title) :
HReconstructor(name,title)
{
fHitIter = NULL;
fTrackIter = NULL;
m_zeroLoc.set(0);
}
HShowerHitTrackMatcher::HShowerHitTrackMatcher()
{
fHitIter = NULL;
fTrackIter = NULL;
m_zeroLoc.set(0);
}
HShowerHitTrackMatcher::~HShowerHitTrackMatcher(void) {
if (fHitIter) delete fHitIter;
if (fTrackIter) delete fTrackIter;
}
Bool_t HShowerHitTrackMatcher::init() {
m_pTrackCat = gHades->getCurrentEvent()->getCategory(catShowerTrack);
if (m_pTrackCat) {
fTrackIter = (HIterator*)m_pTrackCat->MakeIterator();
}
m_pHitCat = gHades->getCurrentEvent()->getCategory(catShowerHit);
if (m_pHitCat) {
fHitIter = (HIterator*)m_pHitCat->MakeIterator();
}
return kTRUE;
}
Bool_t HShowerHitTrackMatcher::finalize(void) {
return kTRUE;
}
Int_t HShowerHitTrackMatcher::execute()
{
if(fTrackIter == 0 || fHitIter == 0 ) return 0;
map<Int_t, vector<Int_t> > trackMap;
HShowerTrack* pTrack;
fTrackIter->Reset();
while((pTrack = (HShowerTrack *) fTrackIter->Next()))
{
Int_t addTr = pTrack->getAddress();
Int_t trackNr = pTrack->getTrack();
map<Int_t,vector<Int_t> >::iterator pos = trackMap.find(addTr);
if( pos == trackMap.end() ) {
vector<Int_t> v;
v.push_back(trackNr);
trackMap.insert( make_pair( addTr, v ) );
} else {
(pos->second).push_back(trackNr);
}
}
HShowerHitSim* pHit;
fHitIter ->Reset();
while((pHit = (HShowerHitSim*)fHitIter->Next()))
{
Int_t addTr = pHit->getAddress();
map<Int_t,vector<Int_t> >::iterator pos = trackMap.find(addTr);
if( pos != trackMap.end() ) {
vector<Int_t>& list = pos->second;
for( UInt_t i = 0; i < list.size(); i ++ ) {
pHit->setTrack(list[i]);
}
} else {
Error("execute()","Corresponding pad address of the HShowerTrack list not found in HShowerHitSim!");
}
}
return 0;
}
hshowerhittrackmatcher.cc:1 hshowerhittrackmatcher.cc:2 hshowerhittrackmatcher.cc:3 hshowerhittrackmatcher.cc:4 hshowerhittrackmatcher.cc:5 hshowerhittrackmatcher.cc:6 hshowerhittrackmatcher.cc:7 hshowerhittrackmatcher.cc:8 hshowerhittrackmatcher.cc:9 hshowerhittrackmatcher.cc:10 hshowerhittrackmatcher.cc:11 hshowerhittrackmatcher.cc:12 hshowerhittrackmatcher.cc:13 hshowerhittrackmatcher.cc:14 hshowerhittrackmatcher.cc:15 hshowerhittrackmatcher.cc:16 hshowerhittrackmatcher.cc:17 hshowerhittrackmatcher.cc:18 hshowerhittrackmatcher.cc:19 hshowerhittrackmatcher.cc:20 hshowerhittrackmatcher.cc:21 hshowerhittrackmatcher.cc:22 hshowerhittrackmatcher.cc:23 hshowerhittrackmatcher.cc:24 hshowerhittrackmatcher.cc:25 hshowerhittrackmatcher.cc:26 hshowerhittrackmatcher.cc:27 hshowerhittrackmatcher.cc:28 hshowerhittrackmatcher.cc:29 hshowerhittrackmatcher.cc:30 hshowerhittrackmatcher.cc:31 hshowerhittrackmatcher.cc:32 hshowerhittrackmatcher.cc:33 hshowerhittrackmatcher.cc:34 hshowerhittrackmatcher.cc:35 hshowerhittrackmatcher.cc:36 hshowerhittrackmatcher.cc:37 hshowerhittrackmatcher.cc:38 hshowerhittrackmatcher.cc:39 hshowerhittrackmatcher.cc:40 hshowerhittrackmatcher.cc:41 hshowerhittrackmatcher.cc:42 hshowerhittrackmatcher.cc:43 hshowerhittrackmatcher.cc:44 hshowerhittrackmatcher.cc:45 hshowerhittrackmatcher.cc:46 hshowerhittrackmatcher.cc:47 hshowerhittrackmatcher.cc:48 hshowerhittrackmatcher.cc:49 hshowerhittrackmatcher.cc:50 hshowerhittrackmatcher.cc:51 hshowerhittrackmatcher.cc:52 hshowerhittrackmatcher.cc:53 hshowerhittrackmatcher.cc:54 hshowerhittrackmatcher.cc:55 hshowerhittrackmatcher.cc:56 hshowerhittrackmatcher.cc:57 hshowerhittrackmatcher.cc:58 hshowerhittrackmatcher.cc:59 hshowerhittrackmatcher.cc:60 hshowerhittrackmatcher.cc:61 hshowerhittrackmatcher.cc:62 hshowerhittrackmatcher.cc:63 hshowerhittrackmatcher.cc:64 hshowerhittrackmatcher.cc:65 hshowerhittrackmatcher.cc:66 hshowerhittrackmatcher.cc:67 hshowerhittrackmatcher.cc:68 hshowerhittrackmatcher.cc:69 hshowerhittrackmatcher.cc:70 hshowerhittrackmatcher.cc:71 hshowerhittrackmatcher.cc:72 hshowerhittrackmatcher.cc:73 hshowerhittrackmatcher.cc:74 hshowerhittrackmatcher.cc:75 hshowerhittrackmatcher.cc:76 hshowerhittrackmatcher.cc:77 hshowerhittrackmatcher.cc:78 hshowerhittrackmatcher.cc:79 hshowerhittrackmatcher.cc:80 hshowerhittrackmatcher.cc:81 hshowerhittrackmatcher.cc:82 hshowerhittrackmatcher.cc:83 hshowerhittrackmatcher.cc:84 hshowerhittrackmatcher.cc:85 hshowerhittrackmatcher.cc:86 hshowerhittrackmatcher.cc:87 hshowerhittrackmatcher.cc:88 hshowerhittrackmatcher.cc:89 hshowerhittrackmatcher.cc:90 hshowerhittrackmatcher.cc:91 hshowerhittrackmatcher.cc:92 hshowerhittrackmatcher.cc:93 hshowerhittrackmatcher.cc:94 hshowerhittrackmatcher.cc:95 hshowerhittrackmatcher.cc:96 hshowerhittrackmatcher.cc:97 hshowerhittrackmatcher.cc:98 hshowerhittrackmatcher.cc:99 hshowerhittrackmatcher.cc:100 hshowerhittrackmatcher.cc:101 hshowerhittrackmatcher.cc:102 hshowerhittrackmatcher.cc:103 hshowerhittrackmatcher.cc:104 hshowerhittrackmatcher.cc:105 hshowerhittrackmatcher.cc:106 hshowerhittrackmatcher.cc:107 hshowerhittrackmatcher.cc:108 hshowerhittrackmatcher.cc:109 hshowerhittrackmatcher.cc:110 hshowerhittrackmatcher.cc:111 hshowerhittrackmatcher.cc:112 hshowerhittrackmatcher.cc:113 hshowerhittrackmatcher.cc:114 hshowerhittrackmatcher.cc:115 hshowerhittrackmatcher.cc:116 hshowerhittrackmatcher.cc:117 hshowerhittrackmatcher.cc:118 hshowerhittrackmatcher.cc:119 hshowerhittrackmatcher.cc:120 hshowerhittrackmatcher.cc:121 hshowerhittrackmatcher.cc:122 hshowerhittrackmatcher.cc:123 hshowerhittrackmatcher.cc:124 hshowerhittrackmatcher.cc:125 hshowerhittrackmatcher.cc:126 hshowerhittrackmatcher.cc:127 hshowerhittrackmatcher.cc:128 hshowerhittrackmatcher.cc:129 hshowerhittrackmatcher.cc:130 hshowerhittrackmatcher.cc:131 hshowerhittrackmatcher.cc:132 hshowerhittrackmatcher.cc:133 hshowerhittrackmatcher.cc:134 hshowerhittrackmatcher.cc:135 hshowerhittrackmatcher.cc:136 hshowerhittrackmatcher.cc:137 hshowerhittrackmatcher.cc:138 hshowerhittrackmatcher.cc:139 hshowerhittrackmatcher.cc:140 hshowerhittrackmatcher.cc:141 hshowerhittrackmatcher.cc:142 hshowerhittrackmatcher.cc:143 hshowerhittrackmatcher.cc:144 hshowerhittrackmatcher.cc:145 hshowerhittrackmatcher.cc:146 hshowerhittrackmatcher.cc:147 hshowerhittrackmatcher.cc:148 hshowerhittrackmatcher.cc:149 hshowerhittrackmatcher.cc:150 hshowerhittrackmatcher.cc:151 hshowerhittrackmatcher.cc:152 hshowerhittrackmatcher.cc:153 hshowerhittrackmatcher.cc:154 hshowerhittrackmatcher.cc:155 hshowerhittrackmatcher.cc:156 hshowerhittrackmatcher.cc:157 hshowerhittrackmatcher.cc:158 hshowerhittrackmatcher.cc:159 hshowerhittrackmatcher.cc:160 hshowerhittrackmatcher.cc:161 hshowerhittrackmatcher.cc:162 hshowerhittrackmatcher.cc:163 hshowerhittrackmatcher.cc:164 hshowerhittrackmatcher.cc:165 hshowerhittrackmatcher.cc:166 hshowerhittrackmatcher.cc:167 hshowerhittrackmatcher.cc:168 hshowerhittrackmatcher.cc:169 hshowerhittrackmatcher.cc:170 hshowerhittrackmatcher.cc:171 hshowerhittrackmatcher.cc:172 hshowerhittrackmatcher.cc:173 hshowerhittrackmatcher.cc:174 hshowerhittrackmatcher.cc:175 hshowerhittrackmatcher.cc:176 hshowerhittrackmatcher.cc:177 hshowerhittrackmatcher.cc:178 hshowerhittrackmatcher.cc:179 hshowerhittrackmatcher.cc:180 hshowerhittrackmatcher.cc:181 hshowerhittrackmatcher.cc:182 hshowerhittrackmatcher.cc:183 hshowerhittrackmatcher.cc:184 hshowerhittrackmatcher.cc:185 hshowerhittrackmatcher.cc:186 hshowerhittrackmatcher.cc:187