double Ant::getTauEta(TourNode lastNode, TourNode newNode, TourValues deltaValues) { // get tau_ij, eta_ij^k double tau = _pm.getTau(lastNode, newNode); double eta = getEta(deltaValues); // calculate t_ij^alpha * n_ij^beta return pow(tau, _alpha) * pow(eta, _beta); }
double getMomScaleFactor(Int_t pId, Float_t pX, Float_t pY, Float_t pZ) { double momSc = 1.; if(abs(pId)==13) momSc = 1.00 - 0.01; else if(abs(pId)==11) { if( fabs(getEta(pX, pY, pZ))<1.4442 ) momSc = 1.00 - 0.02; else momSc = 1.00 - 0.035; } return momSc; }
Float_t getMaxValue(UInt_t npart, Float_t *valArr, Int_t & pickedIdx, Float_t *vPx = 0, Float_t *vPy = 0, Float_t *vPz = 0, Float_t ptThr = 0., Float_t etaThr = 999., Bool_t *vIdTight = 0) { pickedIdx = -1; Float_t thisVal = -999999.; bool usePtThr(vPx!=0 && vPy!=0 && ptThr>0.); bool useEtaThr(vPx!=0 && vPy!=0 && vPz!=0 && etaThr<990.); bool useTightId(vIdTight!=0); for(UInt_t k=0; k<npart; ++k) { if( useTightId && vIdTight[k]==false ) continue; if( usePtThr && getPt(vPx[k], vPy[k])<ptThr ) continue; if( useEtaThr && fabs(getEta(vPx[k], vPy[k], vPz[k]))>etaThr ) continue; if(valArr[k]>thisVal) { thisVal = valArr[k]; pickedIdx = k; } } return thisVal; }
// Returns formatted eta as string inline std::string getTextEta() { return getTimeString(getEta()); }
// Returns formatted eta as string std::string gt::Torrent::getTextEta() { return getTimeString(getEta()); }
void PhysicsRecord::fillData(const TrackletCollection& tracklets, const HitCollection::tTrackList& mcTruth, const HitCollection& hits, uint nLayerTriplets) { LOG << "Evaluating event " << event << " layer triplet " << layerTriplet << std::endl; //std::ofstream histo("ptCalc", std::ios::app); //uint cPt = 0; uint swPt = 0; uint rwPt = 0; std::set<uint> foundTracks; uint fakeTracks = 0; uint foundClones = 0; uint nFoundTracklets = tracklets.getTrackletOffsets()[event * nLayerTriplets + layerTriplet + 1] - tracklets.getTrackletOffsets()[event * nLayerTriplets + layerTriplet]; LOG << "Found " << nFoundTracklets << " triplets:" << std::endl; for(uint i = tracklets.getTrackletOffsets()[event * nLayerTriplets + layerTriplet]; i < tracklets.getTrackletOffsets()[event * nLayerTriplets + layerTriplet + 1]; ++i){ Tracklet tracklet(tracklets, i); float tEta = getEta(Hit(hits,tracklet.hit1()), Hit(hits,tracklet.hit3())); float tPt = getPt(Hit(hits,tracklet.hit1()), Hit(hits,tracklet.hit2()), Hit(hits,tracklet.hit3())); if(tracklet.isValid(hits)){ //valid triplet if(mcTruth.find(tracklet.trackId(hits)) != mcTruth.end()){ // ensure that it is a "findable track" otherwise efficiency greater one possible bool inserted = foundTracks.insert(tracklet.trackId(hits)).second; if(inserted){ //found for the first time eta[getEtaBin(tEta)].valid++; pt[getPtBin(tPt)].valid++; /*double calculatedPt = getPt(Hit(hits,tracklet.hit1()), Hit(hits,tracklet.hit2()), Hit(hits,tracklet.hit3())); double mcPt = mcTruth.at(tracklet.trackId(hits))[0].simtrackpt(); histo << fabs(calculatedPt - mcPt) / mcPt << std::endl; if((fabs(calculatedPt - mcPt) / mcPt) < 0.1) cPt++; else if((fabs(calculatedPt - mcPt) / mcPt) < 0.9) swPt++; else rwPt++;*/ VLOG << zkr::cc::fore::green; VLOG << "Track " << tracklet.trackId(hits) << " : " << tracklet.hit1() << "-" << tracklet.hit2() << "-" << tracklet.hit3(); VLOG << " TIP: " << getTIP(Hit(hits,tracklet.hit1()), Hit(hits,tracklet.hit2()), Hit(hits,tracklet.hit3())); VLOG << zkr::cc::console << std::endl; } else { //clone ++foundClones; eta[getEtaBin(tEta)].clones++; pt[getPtBin(tPt)].clones++; /*double calculatedPt = getPt(Hit(hits,tracklet.hit1()), Hit(hits,tracklet.hit2()), Hit(hits,tracklet.hit3())); double mcPt = mcTruth.at(tracklet.trackId(hits))[0].simtrackpt(); histo << fabs(calculatedPt - mcPt) / mcPt << std::endl; if((fabs(calculatedPt - mcPt) / mcPt) < 0.1) cPt++; else if((fabs(calculatedPt - mcPt) / mcPt) < 0.9) swPt++; else rwPt++;*/ VLOG << zkr::cc::fore::yellow; VLOG << "Track " << tracklet.trackId(hits) << " : " << tracklet.hit1() << "-" << tracklet.hit2() << "-" << tracklet.hit3(); VLOG << " TIP: " << getTIP(Hit(hits,tracklet.hit1()), Hit(hits,tracklet.hit2()), Hit(hits,tracklet.hit3())); VLOG << zkr::cc::console << std::endl; } } else { //not in findable tracks definition but still valid eta[getEtaBin(tEta)].misc++; pt[getPtBin(tPt)].misc++; } } else { //fake triplet ++fakeTracks; eta[getEtaBin(tEta)].fake++; pt[getPtBin(tPt)].fake++; VLOG << zkr::cc::fore::red; VLOG << "Fake: " << tracklet.hit1() << "[" << hits.getValue(HitId(),tracklet.hit1()) << "]"; VLOG << "-" << tracklet.hit2() << "[" << hits.getValue(HitId(),tracklet.hit2()) << "]"; VLOG << "-" << tracklet.hit3() << "[" << hits.getValue(HitId(),tracklet.hit3()) << "]"; VLOG << " TIP: " << getTIP(Hit(hits,tracklet.hit1()), Hit(hits,tracklet.hit2()), Hit(hits,tracklet.hit3())); VLOG << zkr::cc::console << std::endl; } } //std::cout << "\tINTERMEIDATE: correctly calculated: " << cPt << " slightly wrongly calculated: " << swPt << " really wrong " << rwPt << std::endl; //output not found tracks for(auto vTrack : mcTruth) { if( foundTracks.find(vTrack.first) == foundTracks.end()){ VLOG << "Didn't find track " << vTrack.first << std::endl; PHitWrapper innerHit(vTrack.second[0]); PHitWrapper middleHit(vTrack.second[floor(vTrack.second.size()/2)]); PHitWrapper outerHit(vTrack.second[vTrack.second.size()-1]); /*double calculatedPt = getPt(innerHit, middleHit, outerHit); double mcPt = vTrack.second[0].simtrackpt(); histo << fabs(calculatedPt - mcPt) / mcPt << std::endl; if((fabs(calculatedPt - mcPt) / mcPt) < 0.1) cPt++; else if((fabs(calculatedPt - mcPt) / mcPt) < 0.9) swPt++; else rwPt++;*/ eta[getEtaBin(getEta(innerHit, outerHit))].missed++; pt[getPtBin(getPt(innerHit, middleHit, outerHit))].missed++; } } efficiencyMean = ((double) foundTracks.size()) / Utils::clamp(mcTruth.size()); fakeRateMean = ((double) fakeTracks) / Utils::clamp(nFoundTracklets); cloneRateMean = ((double) foundClones) / Utils::clamp(nFoundTracklets); eta.fill(); pt.fill(); //std::cout << "correctly calculated: " << cPt << " slightly wrongly calculated: " << swPt << " really wrong " << rwPt << std::endl; LOG << "Efficiency: " << efficiencyMean << " FakeRate: " << fakeRateMean << " CloneRate: " << cloneRateMean << std::endl; //histo.close(); }