127 |
|
if(tempInputCollection == "trigobj-muon pairs") tempInputCollection = "muon-trigobj pairs"; |
128 |
|
if(tempInputCollection.find("pairs")==string::npos){ //just a single object |
129 |
|
if(tempInputCollection.find("secondary")!=string::npos){//secondary object |
130 |
< |
int spaceIndex = tempInputCollection.find(" "); |
131 |
< |
int secondWordLength = tempInputCollection.size() - spaceIndex; |
132 |
< |
objectsToGet.push_back(tempInputCollection.substr(spaceIndex+1,secondWordLength)); |
133 |
< |
} |
134 |
< |
else{ |
130 |
> |
if(tempInputCollection.find("secondary muons")!=string::npos){//treat secondary muons differently; allow for a different input collection |
131 |
> |
objectsToGet.push_back("secondary muons"); |
132 |
> |
} else { |
133 |
> |
int spaceIndex = tempInputCollection.find(" "); |
134 |
> |
int secondWordLength = tempInputCollection.size() - spaceIndex; |
135 |
> |
objectsToGet.push_back(tempInputCollection.substr(spaceIndex+1,secondWordLength)); |
136 |
> |
} |
137 |
> |
} else{ |
138 |
|
objectsToGet.push_back(tempInputCollection); |
139 |
|
} |
140 |
|
objectsToPlot.push_back(tempInputCollection); |
2982 |
|
value = trkJetDeltaRMin; |
2983 |
|
} |
2984 |
|
|
2985 |
+ |
else if(variable == "deltaRMinElecLooseMvaId") { |
2986 |
+ |
// calculate minimum deltaR between track and any other electron passing loose mva ID, i.e., mvaNonTrigV0 > 0 |
2987 |
+ |
double trkElecDeltaRMin = 99.; |
2988 |
+ |
for (uint ielec = 0; ielec<electrons->size(); ielec++) { |
2989 |
+ |
string empty = ""; |
2990 |
+ |
double mvaNonTrigV0 = valueLookup(&electrons->at(ielec), "mvaNonTrigV0", "", empty); |
2991 |
+ |
if (mvaNonTrigV0 < 0) continue; // only consider electrons with mvaNonTrigV0 > 0 |
2992 |
+ |
double elecEta = valueLookup(&electrons->at(ielec), "eta", "", empty); |
2993 |
+ |
double elecPhi = valueLookup(&electrons->at(ielec), "phi", "", empty); |
2994 |
+ |
double trkElecDeltaR = deltaR(object->eta, object->phi, elecEta, elecPhi); |
2995 |
+ |
if (trkElecDeltaR < trkElecDeltaRMin) trkElecDeltaRMin = trkElecDeltaR; |
2996 |
+ |
} |
2997 |
+ |
value = trkElecDeltaRMin; |
2998 |
+ |
} |
2999 |
+ |
|
3000 |
+ |
else if(variable == "deltaRMinMuonLooseId") { |
3001 |
+ |
// calculate minimum deltaR between track and any other loose-Id muon |
3002 |
+ |
double trkMuonDeltaRMin = 99.; |
3003 |
+ |
// if (!muons) cout << "ERROR: could not find muon collection for calculation of deltaRMinMuonLooseId" << endl; |
3004 |
+ |
for (uint imuon = 0; imuon<muons->size(); imuon++) { |
3005 |
+ |
string empty = ""; |
3006 |
+ |
double isLooseIdMuon = valueLookup(&muons->at(imuon), "looseID", "", empty); |
3007 |
+ |
if (!isLooseIdMuon) continue; // only consider muons that pass the looseID criteria |
3008 |
+ |
double muonEta = valueLookup(&muons->at(imuon), "eta", "", empty); |
3009 |
+ |
double muonPhi = valueLookup(&muons->at(imuon), "phi", "", empty); |
3010 |
+ |
double trkMuonDeltaR = deltaR(object->eta, object->phi, muonEta, muonPhi); |
3011 |
+ |
if (trkMuonDeltaR < trkMuonDeltaRMin) trkMuonDeltaRMin = trkMuonDeltaR; |
3012 |
+ |
} |
3013 |
+ |
value = trkMuonDeltaRMin; |
3014 |
+ |
} |
3015 |
+ |
|
3016 |
+ |
else if(variable == "deltaRMinSecMuonLooseIdGlobal") { |
3017 |
+ |
// calculate minimum deltaR between track and any other loose-Id muon |
3018 |
+ |
double trkMuonDeltaRMin = 99.; |
3019 |
+ |
// if (!secMuons) cout << "ERROR: could not find secondary muon collection for calculation of deltaRMinSecMuonLooseIdGlobal" << endl; |
3020 |
+ |
for (uint imuon = 0; imuon<secMuons->size(); imuon++) { |
3021 |
+ |
string empty = ""; |
3022 |
+ |
double isLooseIdMuon = valueLookup(&secMuons->at(imuon), "looseIDGlobalMuon", "", empty); |
3023 |
+ |
if (!isLooseIdMuon) continue; // only consider muons that pass the looseIDGlobal criteria |
3024 |
+ |
double muonEta = valueLookup(&secMuons->at(imuon), "eta", "", empty); |
3025 |
+ |
double muonPhi = valueLookup(&secMuons->at(imuon), "phi", "", empty); |
3026 |
+ |
double trkMuonDeltaR = deltaR(object->eta, object->phi, muonEta, muonPhi); |
3027 |
+ |
if (trkMuonDeltaR < trkMuonDeltaRMin) trkMuonDeltaRMin = trkMuonDeltaR; |
3028 |
+ |
} |
3029 |
+ |
value = trkMuonDeltaRMin; |
3030 |
+ |
} |
3031 |
+ |
|
3032 |
+ |
else if(variable == "deltaRMinTauLooseHadronicId") { |
3033 |
+ |
// calculate minimum deltaR between track and any other tau passing loose hadronic ID |
3034 |
+ |
double trkTauDeltaRMin = 99.; |
3035 |
+ |
// if (!taus) cout << "ERROR: could not find tau collection for calculation of deltaRMinTauLooseHadronicId" << endl; |
3036 |
+ |
for (uint itau = 0; itau<taus->size(); itau++) { |
3037 |
+ |
string empty = ""; |
3038 |
+ |
double isIdTau = valueLookup(&taus->at(itau), "looseHadronicID", "", empty); |
3039 |
+ |
if (!isIdTau) continue; // only consider taus that pass the loose hadronic ID criteria |
3040 |
+ |
double tauEta = valueLookup(&taus->at(itau), "eta", "", empty); |
3041 |
+ |
double tauPhi = valueLookup(&taus->at(itau), "phi", "", empty); |
3042 |
+ |
double trkTauDeltaR = deltaR(object->eta, object->phi, tauEta, tauPhi); |
3043 |
+ |
if (trkTauDeltaR < trkTauDeltaRMin) trkTauDeltaRMin = trkTauDeltaR; |
3044 |
+ |
} |
3045 |
+ |
value = trkTauDeltaRMin; |
3046 |
+ |
} |
3047 |
+ |
|
3048 |
|
else if(variable == "genDeltaRLowest") value = getGenDeltaRLowest(object); |
3049 |
|
|
3050 |
|
else if(variable == "genMatchedPdgId"){ |