File indexing completed on 2023-03-17 11:10:58
0001 #include "L1Trigger/CSCTrackFinder/test/src/Track.h"
0002 #include <iostream>
0003 using namespace std;
0004 namespace csctf_analysis
0005 {
0006 Track::Track()
0007 {
0008 matched = false;
0009 matchedIndex = -1;
0010 R = 20;
0011 ghost = false;
0012 TFPt=-1;
0013 Quality=-1;
0014 ghostMatchedToIndex = new std::vector<unsigned int>;
0015 ghostR = new std::vector<double>;
0016 ghostQ = new std::vector<double>;
0017 }
0018 Track::Track(const Track& track)
0019 {
0020 ghostMatchedToIndex = new std::vector<unsigned int>;
0021 ghostR = new std::vector<double>;
0022 ghostQ = new std::vector<double>;
0023 *ghostMatchedToIndex= *track.ghostMatchedToIndex;
0024 *ghostR = *track.ghostR;
0025 *ghostQ = *track.ghostQ;
0026 matched=track.matched;
0027 matchedIndex=track.matchedIndex;
0028 R=track.R;
0029 histlist=track.histlist;
0030 ghost=track.ghost;
0031 Quality=track.Quality;
0032 TFPt=track.TFPt;
0033 }
0034 Track::~Track()
0035 {
0036 delete ghostMatchedToIndex;
0037 delete ghostR;
0038 delete ghostQ;
0039 }
0040 void Track::matchedTo(int i, double newR)
0041 {
0042 if(matched==false || newR<R)
0043 {
0044 matched=true;
0045 R=newR;
0046 matchedIndex=i;
0047 }
0048 }
0049 void Track::unMatch()
0050 {
0051 matched = false;
0052 matchedIndex = -1;
0053 R = 20;
0054 TFPt=-1;
0055 Quality=-1;
0056 }
0057 void Track::loseBestGhostCand(std::string param)
0058 {
0059 int loseindex=0;
0060 int size=ghostMatchedToIndex->size();
0061 if(param == 'Q')
0062 {
0063 for(int i=0;i<size;i++)
0064 {
0065 if (ghostQ->at(i)< ghostQ->at(loseindex))
0066 {
0067 loseindex=i;
0068 }
0069 }
0070 }
0071 else if(param == 'R')
0072 {
0073 for(int i=0;i<size;i++)
0074 {
0075 if(ghostR->at(i)>ghostR->at(loseindex))
0076 {
0077 loseindex=i;
0078 }
0079 }
0080 }
0081 else
0082 {
0083 std::cout <<"\nChoose Q or R for ghost Candidate parameter!!!\n";
0084 }
0085 ghostMatchedToIndex->erase(ghostMatchedToIndex->begin()+loseindex);
0086 ghostQ->erase(ghostQ->begin()+loseindex);
0087 ghostR->erase(ghostR->begin()+loseindex);
0088 }
0089 void Track::fillSimvTFHist(const Track& simtrack, const Track& tftrack) const
0090 {
0091 double simfabsEta=fabs(simtrack.getEta());
0092 double simpt=simtrack.getPt();
0093 double tfpt=tftrack.getPt();
0094 if(simfabsEta>=0.9)
0095 {
0096 histlist->SimPt_vs_TFPt_FWD->Fill(simpt,tfpt);
0097 }
0098 if(simfabsEta<=0.9)
0099 {
0100 histlist->SimPt_vs_TFPt_DT->Fill(simpt,tfpt);
0101 }
0102 }
0103 void Track::fillHist()
0104 {
0105 int qual=getQuality();
0106 double pt=getPt();
0107 double mode=getMode();
0108 double fabsEta=fabs(getEta());
0109
0110
0111
0112 double phi_deg=getPhi()*180/3.1415927;
0113 double result=phi_deg-5;
0114 if(result<0) {result+=360;}
0115 while(result>=10){result-=10.0;}
0116 double phi_bar=result;
0117
0118
0119 histlist->Eta->Fill(fabsEta);
0120 histlist->signedEta->Fill(getEta());
0121
0122 histlist->Phi->Fill(getPhi());
0123
0124
0125 if(getEta()>0.9 && getEta()<2.4)
0126 {
0127 histlist->Phi_mod_10_endcap1->Fill(phi_bar);
0128 }
0129 if(getEta()<-0.9 && getEta()>-2.4)
0130 {
0131 histlist->Phi_mod_10_endcap2->Fill(phi_bar);
0132 }
0133 histlist->Pt->Fill(pt);
0134 histlist->Pz->Fill(getPz());
0135 histlist->P->Fill(getP());
0136 histlist->Radius->Fill(getRadius());
0137 histlist->Quality->Fill(qual);
0138 histlist->modeOcc->Fill(mode);
0139 histlist->BX->Fill(getBX());
0140 histlist->FR->Fill(getFR());
0141 histlist->ptDenOverall->Fill(pt);
0142
0143
0144 if( fabsEta >= 0 && fabsEta <= 0.9 )
0145 {
0146 histlist->ptDenDTOnly->Fill(pt);
0147
0148 histlist->modeOccDT->Fill(mode);
0149 }
0150
0151 if( fabsEta >= 1.2 && fabsEta <= 2.4)
0152 {
0153 histlist->ptDenCSCOnly->Fill(pt);
0154 histlist->modeOccCSCOnly->Fill(mode);
0155 }
0156
0157 if( fabsEta >= 1.2 && fabsEta <= 2.1)
0158 {
0159 histlist->ptDenCSCRestricted->Fill(pt);
0160 }
0161
0162 if( fabsEta <= 1.2 && fabsEta >= 0.9)
0163 {
0164 histlist->ptDenOverlap->Fill(pt);
0165 histlist->modeOccOverlap->Fill(mode);
0166 }
0167 if(fabsEta >= 2.1)
0168 {
0169 histlist->ptDenHighEta->Fill(pt);
0170 histlist->modeOccHighEta->Fill(mode);
0171 }
0172 }
0173 void Track::fillMatchHist()
0174 {
0175 int i=0;
0176 int qual=getQuality();
0177 double tfpt=getTFPt();
0178 double simpt=getPt();
0179 double mode=getMode();
0180 double fabsEta = fabs(getEta());
0181 double phi_deg = getPhi()*180/3.1415926;
0182 double result=phi_deg-5;
0183 if(result<0)
0184 {
0185 result+=360;
0186 }
0187 while(result>=10)
0188 {
0189 result-=10.0;
0190 i++;
0191 }
0192 double phi_bar=result;
0193 if(fabsEta>=0.9)
0194 {
0195 histlist->matchedRefPt_FWD->Fill(simpt);
0196 }
0197 if(fabsEta<=0.9)
0198 {
0199 histlist->matchedRefPt_DT->Fill(simpt);
0200 }
0201 histlist->matchEta->Fill(fabsEta);
0202 histlist->signedMatchEta->Fill(getEta());
0203 histlist->matchPhi->Fill(getPhi());
0204 histlist->matchRadius->Fill(getRadius());
0205 histlist->matchMode->Fill(mode);
0206 if(qual>0)
0207 {
0208 histlist->EtaQ1->Fill(fabsEta);
0209 histlist->signedEtaQ1->Fill(getEta());
0210 histlist->PhiQ1->Fill(getPhi());
0211 histlist->PtQ1->Fill(simpt);
0212 }
0213 if(qual>1)
0214 {
0215 histlist->EtaQ2->Fill(fabsEta);
0216 histlist->signedEtaQ2->Fill(getEta());
0217 histlist->PhiQ2->Fill(getPhi());
0218 histlist->PtQ2->Fill(simpt);
0219 if(getEta()>0.9&&getEta()<2.4)
0220 {
0221 histlist->matchPhi_mod_10_Q2_endcap1->Fill(phi_bar);
0222 }
0223 if(getEta()<-0.9&&getEta()>-2.4)
0224 {
0225 histlist->matchPhi_mod_10_Q2_endcap2->Fill(phi_bar);
0226 }
0227 }
0228 if(qual>2)
0229 {
0230 histlist->EtaQ3->Fill(fabsEta);
0231 histlist->signedEtaQ3->Fill(getEta());
0232 histlist->PhiQ3->Fill(getPhi());
0233 histlist->PtQ3->Fill(simpt);
0234 if(getEta()>0.9 && getEta()<2.4)
0235 {
0236 histlist->matchPhi_mod_10_Q3_endcap1->Fill(phi_bar);
0237 }
0238 if(getEta()<-0.9 && getEta()>-2.4)
0239 {
0240 histlist->matchPhi_mod_10_Q3_endcap2->Fill(phi_bar);
0241 }
0242 }
0243
0244
0245
0246
0247
0248 if(qual>1)
0249 {
0250 histlist->matchPtOverall->Fill(simpt);
0251 if (tfpt>10)
0252 {
0253 histlist->matchTFPt10Overall->Fill(simpt);
0254 }
0255 if (tfpt>12)
0256 {
0257 histlist->matchTFPt12Overall->Fill(simpt);
0258 }
0259 if (tfpt>16)
0260 {
0261 histlist->matchTFPt16Overall->Fill(simpt);
0262 }
0263 if (tfpt>20)
0264 {
0265 histlist->matchTFPt20Overall->Fill(simpt);
0266 }
0267 if (tfpt>40)
0268 {
0269 histlist->matchTFPt40Overall->Fill(simpt);
0270 }
0271 if (tfpt>60)
0272 {
0273 histlist->matchTFPt60Overall->Fill(simpt);
0274 }
0275 }
0276
0277 if(fabsEta>=0&&fabsEta<=0.9&&qual>1)
0278 {
0279
0280 histlist->matchPtDTOnly->Fill(simpt);
0281 if (tfpt>10)
0282 {
0283 histlist->matchTFPt10DTOnly->Fill(simpt);
0284 }
0285 if (tfpt>12)
0286 {
0287 histlist->matchTFPt12DTOnly->Fill(simpt);
0288 }
0289 if (tfpt>16)
0290 {
0291 histlist->matchTFPt16DTOnly->Fill(simpt);
0292 }
0293 if (tfpt>20)
0294 {
0295 histlist->matchTFPt20DTOnly->Fill(simpt);
0296 }
0297 if (tfpt>40)
0298 {
0299 histlist->matchTFPt40DTOnly->Fill(simpt);
0300 }
0301 if (tfpt>60)
0302 {
0303 histlist->matchTFPt60DTOnly->Fill(simpt);
0304 }
0305 }
0306
0307 if(fabsEta>=1.2&&fabsEta<=2.4&&qual>1)
0308 {
0309 histlist->matchPtCSCOnly->Fill(simpt);
0310 if (tfpt>10)
0311 {
0312 histlist->matchTFPt10CSCOnly->Fill(simpt);
0313 }
0314 if (tfpt>12)
0315 {
0316 histlist->matchTFPt12CSCOnly->Fill(simpt);
0317 }
0318 if (tfpt>16)
0319 {
0320 histlist->matchTFPt16CSCOnly->Fill(simpt);
0321 }
0322 if (tfpt>20)
0323 {
0324 histlist->matchTFPt20CSCOnly->Fill(simpt);
0325 }
0326 if (tfpt>40)
0327 {
0328 histlist->matchTFPt40CSCOnly->Fill(simpt);
0329 }
0330 if (tfpt>60)
0331 {
0332 histlist->matchTFPt60CSCOnly->Fill(simpt);
0333 }
0334 }
0335
0336 if(fabsEta>=1.2&&fabsEta<=2.1&&qual>1)
0337 {
0338 histlist->matchPtCSCRestricted->Fill(simpt);
0339 if (tfpt>10)
0340 {
0341 histlist->matchTFPt10CSCRestricted->Fill(simpt);
0342 }
0343 if (tfpt>12)
0344 {
0345 histlist->matchTFPt12CSCRestricted->Fill(simpt);
0346 }
0347 if (tfpt>16)
0348 {
0349 histlist->matchTFPt16CSCRestricted->Fill(simpt);
0350 }
0351 if (tfpt>20)
0352 {
0353 histlist->matchTFPt20CSCRestricted->Fill(simpt);
0354 }
0355 if (tfpt>40)
0356 {
0357 histlist->matchTFPt40CSCRestricted->Fill(simpt);
0358 }
0359 if (tfpt>60)
0360 {
0361 histlist->matchTFPt60CSCRestricted->Fill(simpt);
0362 }
0363 }
0364
0365 if(fabsEta<=1.2&&fabsEta>=0.9&&qual>1)
0366 {
0367 histlist->matchPtOverlap->Fill(simpt);
0368 if (tfpt>10)
0369 {
0370 histlist->matchTFPt10Overlap->Fill(simpt);
0371 }
0372 if (tfpt>12)
0373 {
0374 histlist->matchTFPt12Overlap->Fill(simpt);
0375 }
0376 if (tfpt>16)
0377 {
0378 histlist->matchTFPt16Overlap->Fill(simpt);
0379 }
0380 if (tfpt>20)
0381 {
0382 histlist->matchTFPt20Overlap->Fill(simpt);
0383 }
0384 if (tfpt>40)
0385 {
0386 histlist->matchTFPt40Overlap->Fill(simpt);
0387 }
0388 if (tfpt>60)
0389 {
0390 histlist->matchTFPt60Overlap->Fill(simpt);
0391 }
0392 }
0393
0394 if(fabsEta>=2.1&&qual>1)
0395 {
0396 histlist->matchPtHighEta->Fill(simpt);
0397 if (tfpt>10)
0398 {
0399 histlist->matchTFPt10HighEta->Fill(simpt);
0400 }
0401 if (tfpt>12)
0402 {
0403 histlist->matchTFPt12HighEta->Fill(simpt);
0404 }
0405 if (tfpt>16)
0406 {
0407 histlist->matchTFPt16HighEta->Fill(simpt);
0408 }
0409 if (tfpt>20)
0410 {
0411 histlist->matchTFPt20HighEta->Fill(simpt);
0412 }
0413 if (tfpt>40)
0414 {
0415 histlist->matchTFPt40HighEta->Fill(simpt);
0416 }
0417 if (tfpt>60)
0418 {
0419 histlist->matchTFPt60HighEta->Fill(simpt);
0420 }
0421 }
0422
0423 }
0424 void Track::fillGhostHist()
0425 {
0426 int qual=getQuality();
0427 double Eta=getEta();
0428 double fabsEta=fabs(Eta);
0429 double simpt=getPt();
0430 double Phi=getPhi();
0431 histlist->ghostEta->Fill(fabsEta);
0432 histlist->ghostSignedEta->Fill(Eta);
0433 histlist->ghostPhi->Fill(Phi);
0434 histlist->ghostPt->Fill(simpt);
0435 histlist->ghostRadius->Fill(getRadius());
0436
0437
0438 if (qual>0)
0439 {
0440 histlist->ghostEtaQ1->Fill(fabsEta);
0441 histlist->ghostSignedEtaQ1->Fill(Eta);
0442 histlist->ghostPhiQ1->Fill(Phi);
0443 histlist->ghostPtQ1->Fill(simpt);
0444 }
0445 if (qual>1)
0446 {
0447 histlist->ghostEtaQ2->Fill(fabsEta);
0448 histlist->ghostSignedEtaQ2->Fill(Eta);
0449 histlist->ghostPhiQ2->Fill(Phi);
0450 histlist->ghostPtQ2->Fill(simpt);
0451 }
0452 if (qual>2)
0453 {
0454 histlist->ghostEtaQ3->Fill(fabsEta);
0455 histlist->ghostSignedEtaQ3->Fill(Eta);
0456 histlist->ghostPhiQ3->Fill(Phi);
0457 histlist->ghostPtQ3->Fill(simpt);
0458 }
0459 }
0460 void Track::fillRateHist()
0461 {
0462 double pt=getPt()+0.001;
0463 double stepPt=histlist->getPtStep();
0464
0465 for(double threshold=pt;threshold>=-1;threshold-=stepPt)
0466 {
0467 histlist->rateHist->Fill(threshold);
0468 }
0469
0470
0471 }
0472 }