14 #include "TClonesArray.h"
26 if(!fInstance) cout <<
"NO PndTrkSttHitList: you must fill it BEFORE doing what you are doing!" << endl;
31 if(fInstance) cout <<
"you are instanciating a PndTrkSttHitList, but you already did it, what are you doing?" << endl;
57 int tubeID = ((
PndSttHit*) hit)->GetTubeID();
89 std::map< int , int > ::iterator it;
91 hitmap.insert( std::pair<int , int > (isec,
hitlist.size() - 1));
105 std::map< int , int > ::iterator it;
109 hitmap.insert( std::pair<int , int > (isec,
hitlist.size() - 1));
111 hitmap2.insert( std::pair<int , int > (ilay,
hitlist.size() - 1));
114 hitmap3.insert( std::pair<int , int > (iglo,
hitlist.size() - 1));
126 for(
int ilay = 0; ilay < 24; ilay++) {
127 cout <<
"LAYER " << ilay <<
": ";
130 std::pair < std::multimap< int, int >::iterator, std::multimap < int, int >::iterator> ret;
131 ret =
hitmap2.equal_range(ilay);
132 for (std::multimap< int, int >::iterator it = ret.first; it != ret.second; ++it)
133 std::cout <<
' ' << it->second;
140 cout <<
"Layer " << ilay <<
": ";
141 for (
size_t ihit = 0; ihit < listofhits.size(); ihit++) cout <<
" " << (listofhits.at(ihit))->GetHitID();
148 for (
size_t ihit = 0; ihit < listofhits.size(); ihit++) (listofhits.at(ihit))->
Draw(color);
161 std::pair < std::multimap< int, int >::iterator, std::multimap < int, int >::iterator> ret;
162 ret =
hitmap2.equal_range(ilay);
164 for (std::multimap< int, int >::iterator it = ret.first; it != ret.second; ++it) counter++;
172 std::vector< PndTrkHit* > thislayer;
174 std::pair < std::multimap< int, int >::iterator, std::multimap < int, int >::iterator> ret;
175 ret =
hitmap2.equal_range(ilay);
176 for (std::multimap< int, int >::iterator it = ret.first; it != ret.second; ++it) {
179 thislayer.push_back(hit);
186 return listofhits.at(ihit);
194 cout <<
"SECTOR " <<
isec <<
": ";
197 std::pair < std::multimap< int, int >::iterator, std::multimap < int, int >::iterator> ret;
198 ret =
hitmap.equal_range(isec);
199 for (std::multimap< int, int >::iterator it = ret.first; it != ret.second; ++it)
200 std::cout <<
' ' << it->second;
209 cout <<
"Sector " << isec <<
": ";
210 for (
size_t ihit = 0; ihit < listofhits.size(); ihit++) cout <<
" " << (listofhits.at(ihit))->GetHitID();
217 for (
size_t ihit = 0; ihit < listofhits.size(); ihit++) (listofhits.at(ihit))->
Draw(color);
221 std::pair < std::multimap< int, int >::iterator, std::multimap < int, int >::iterator> ret;
222 ret =
hitmap.equal_range(isec);
224 for (std::multimap< int, int >::iterator it = ret.first; it != ret.second; ++it) counter++;
234 std::vector< PndTrkHit* > thissector;
236 std::pair < std::multimap< int, int >::iterator, std::multimap < int, int >::iterator> ret;
237 ret =
hitmap.equal_range(isec);
238 for (std::multimap< int, int >::iterator it = ret.first; it != ret.second; ++it) {
241 thissector.push_back(hit);
248 return listofhits.at(ihit);
256 for(
int iglo = 0; iglo < nmaxglo; iglo++) {
260 cout <<
"SECTOR " << isec <<
", LAYER " << ilay <<
": ";
263 std::pair < std::multimap< int, int >::iterator, std::multimap < int, int >::iterator> ret;
264 ret =
hitmap3.equal_range(iglo);
265 for (std::multimap< int, int >::iterator it = ret.first; it != ret.second; ++it)
266 std::cout <<
' ' << it->second;
275 cout <<
"Sector " << isec <<
", Layer " << ilay <<
": ";
277 for (
size_t ihit = 0; ihit < listofhits.size(); ihit++) cout <<
" " << (listofhits.at(ihit))->GetHitID();
284 for (
size_t ihit = 0; ihit < listofhits.size(); ihit++) (listofhits.at(ihit))->
Draw(color);
288 std::pair < std::multimap< int, int >::iterator, std::multimap < int, int >::iterator> ret;
290 ret =
hitmap3.equal_range(iglo);
292 for (std::multimap< int, int >::iterator it = ret.first; it != ret.second; ++it) counter++;
302 std::vector< PndTrkHit* > thissecandlay;
304 std::pair < std::multimap< int, int >::iterator, std::multimap < int, int >::iterator> ret;
306 ret =
hitmap3.equal_range(iglo);
307 for (std::multimap< int, int >::iterator it = ret.first; it != ret.second; ++it) {
310 thissecandlay.push_back(hit);
312 return thissecandlay;
317 return listofhits.at(ihit);
324 return isec + ilay * nofsectors;
330 ilay = iglo / nofsectors;
331 isec = iglo - ilay * nofsectors;
336 std::vector< PndTrkHit* > thislist;
338 for (
size_t ihit = 0; ihit <
hitlist.size() ; ihit++) {
340 thislist.push_back(hit);
void PrintSectorsAndLayers()
static PndTrkSttHitList * fInstance
void DrawLayer(int ilay, Color_t color)
PndTrkSttHitList * Instanciate()
std::vector< PndTrkHit * > GetHitList()
PndTrkHit * GetHitFromLayer(int ihit, int ilay)
std::multimap< int, int > hitmap2
PndTrkHit * GetHitFromSectorAndLayer(int ihit, int isec, int ilay)
int GetNofHitsInSector(int isec)
PndTrkHit * GetHitFromSector(int ihit, int isec)
void FromGloToSecLay(int iglo, int &isec, int &ilay)
std::vector< PndTrkHit > hitlist
std::vector< PndTrkHit * > GetHitListFromLayer(int ilay)
std::vector< PndTrkHit * > GetHitListFromSector(int isec)
std::multimap< int, int > hitmap3
void Draw(Color_t color=kBlack)
void PrintSector(int isec)
int GetNofHitsInLayer(int ilay)
int hit(Int_t nEvents=0, TString inFile="sim.root", TString parFile="par.root", TString inDigi="digi.root", TString outFile="hit.root", Int_t timeBased=0)
void AddHit(Int_t hitID, Int_t detID, Bool_t used, Int_t iregion, TVector3 &pos)
std::multimap< int, int > hitmap
void PrintSectorAndLayer(int isec, int ilay)
TClonesArray * fTubeArray
static PndTrkSttHitList * Instance()
int GetNofHitsInSectorAndLayer(int isec, int ilay)
void AddHit(Int_t hitid, Int_t detid, FairHit *hit)
void DrawSectorAndLayer(int isec, int ilay, Color_t color=kBlack)
TVector3 GetWireDirection()
std::vector< PndTrkHit * > GetHitListFromSectorAndLayer(int isec, int ilay)
void PrintLayer(int ilay)
Int_t FromSecLayToGlo(int isec, int ilay)
void DrawSector(int isec, Color_t color=kBlack)