27 TClonesArray* sttTubeArray):fAllowDoubleHits(kFALSE),fNumHits(0),fNumHitsWithoutDouble(0),fRunTimeBased(kFALSE){
38 #ifdef PRINT_STT_NEIGHBORS
40 FILE* fp = fopen(
"tubeNeighborings.txt",
"w");
41 int minNumNeigh=100, maxNumNeigh=0, numSkewed=0, numSkewedLessNeig=0;
45 for (
int i = 1;
i < sttTubeArray->GetEntriesFast(); ++
i) {
50 #ifdef PRINT_STT_NEIGHBORS
53 if(skewed) ++numSkewed;
54 if(skewed && neighbors.GetSize()<7) ++numSkewedLessNeig;
55 fprintf(fp,
"%d %4i:",skewed, tube->
GetTubeID());
56 for(
int j=0; j<neighbors.GetSize(); ++j) {
57 fprintf(fp,
" %4i", neighbors[j]);
61 if(minNumNeigh>neighbors.GetSize()) minNumNeigh=neighbors.GetSize();
62 if(maxNumNeigh<neighbors.GetSize()) maxNumNeigh=neighbors.GetSize();
66 #ifdef PRINT_STT_NEIGHBORS
67 fprintf(fp,
"max/min number of neighbors: %3i / %3i\n", maxNumNeigh, minNumNeigh);
68 fprintf(fp,
"number of skewed straws: %3i \n", numSkewed);
69 fprintf(fp,
"number of skewed straws with less than 7 neighbors: %3i \n", numSkewedLessNeig);
79 Int_t branchId = FairRootManager::Instance()->GetBranchId(
"STTHit");
82 if (branchName.Contains(
"skewed", TString::kIgnoreCase)){
88 for (
int i = 0;
i < hits->GetEntries();
i++) {
92 std::pair<int, PndSttSkewedHit*>(tubeId, skewedHit));
93 if (skewedHit->GetEntryNr().GetIndex() < 0) {
94 myID = FairLink(branchId,
i);
95 skewedHit->SetEntryNr(FairLink(branchId,
i));
97 myID = skewedHit->GetEntryNr();
106 for (
int i = 0;
i < hits->GetEntries();
i++) {
109 if (myHit->GetEntryNr().GetIndex() < 0) {
110 myID = FairLink(branchId,
i);
111 myHit->SetEntryNr(FairLink(branchId,
i));
113 myID = myHit->GetEntryNr();
127 vector<FairHit*> hitsWithoutDouble;
128 map<int, FairLink> mapWithoutDouble;
133 if(sttHits.find(tubeId)==sttHits.end()){
134 sttHits.insert(tubeId);
135 hitsWithoutDouble.push_back(
fHitsOrig[i]);
145 fHits = hitsWithoutDouble;
154 for (
size_t i = 0;
i <
fHits.size(); ++
i) {
180 for (
size_t i = 0;
i <
fHits.size(); ++
i) {
186 for (
size_t i = 0;
i <
fHits.size(); ++
i) {
192 for (
int j = 0; j < neighbors.GetSize(); ++j) {
195 if (hitIds.find(neighbors[j]) != hitIds.end()) {
224 for (
int j = 0; j < neighbors.GetSize(); ++j) {
225 if (hitIds.find(neighbors[j]) != hitIds.end()
245 double sttHitTimeStamp;
246 double sttNeighborTimeStamp;
249 for (
size_t i = 0;
i <
fHits.size(); ++
i) {
256 for (
size_t i = 0;
i <
fHits.size(); ++
i) {
262 sttHitTimeStamp=sttHit->GetTimeStamp();
263 sttNeighborTimeStamp=-9999;
267 for (
int j = 0; j < neighbors.GetSize(); ++j) {
270 if (hitIds.find(neighbors[j]) != hitIds.end()) {
273 sttNeighborTimeStamp = sttHit->GetTimeStamp();
275 if(std::abs(sttHitTimeStamp - sttNeighborTimeStamp) <
fClusterTime){
283 if(std::abs(sttHitTimeStamp - sttNeighborTimeStamp) <
fClusterTime){
305 for (
int j = 0; j < neighbors.GetSize(); ++j) {
306 if (hitIds.find(neighbors[j]) != hitIds.end()
311 sttNeighborTimeStamp = sttHit->GetTimeStamp();
313 if(std::abs(sttHitTimeStamp - sttNeighborTimeStamp) <
fClusterTime){
327 map<int, vector<int> >::iterator it;
329 for (
int i = 0;
i < 8; ++
i) {
336 if (it->second.size() > 6) {
348 if (it->second.size() > 6) {
360 if (it->second.size() > 6) {
371 cout <<
"PndSttCellTrackFinderData::PrintInfo()" << endl;
372 cout <<
"#hits: " <<
fHits.size() <<
", #unambiguous: "
379 cout <<
"fHits (*-skewed): ";
381 for (
size_t i = 0;
i <
fHits.size(); ++
i) {
390 cout <<
"fSeparations: " << endl;
391 for (
int i = 0;
i < 8; ++
i) {
392 cout <<
"#" <<
i <<
": ";
402 cout <<
"fHitNeighbors: " << endl;
405 cout << it->first <<
": ";
406 for (
size_t i = 0;
i < it->second.size(); ++
i) {
407 cout << it->second.at(
i) <<
" ";
std::map< int, std::vector< int > > fHitNeighbors
PndSttGeometryMap * fGeometryMap
std::map< int, std::vector< int > > fHitNeighborsWithoutSkewed
std::map< int, std::vector< int > > fHitNeighborsWithoutEdges
std::vector< FairHit * > fHits
std::map< int, FairLink > fMapHitToFairLink
std::map< int, std::vector< int > > fSeparationsWithoutEdges
Double_t GetIsochrone() const
std::multimap< int, PndSttSkewedHit * > fCombinedSkewedHits
bool IsSkewedStraw(int strawindex) const
bool IsSkewedStraw(int strawindex) const
bool IsEdgeStraw(int strawindex) const
int fNumHitsWithoutDouble
void AddHits(TClonesArray *hits, TString branchName)
void FindHitNeighborsEventBased()
PndSttCellTrackFinderData(TClonesArray *fTubeArray)
std::vector< FairHit * > fHitsOrig
PndSttStrawMap * fStrawMap
void GenerateNeighborhoodData()
void FindHitNeighborsTimeBased()
std::map< int, TVector3 > fMapTubeIdToPos
std::map< int, std::vector< int > > fSeparations
std::map< int, std::vector< int > > fSeparationsWithoutSkewed
std::map< int, int > fMapTubeIdToHit
std::map< int, FairLink > fMapHitToFairLinkOrig
TArrayI GetNeighboringsByMap(int tubeId)
std::pair< Int_t, Int_t > GetTubeIDs() const