41 |
|
//always make the plot of number of primary verticex (to check pile-up reweighting) |
42 |
|
objectsToPlot.push_back("primaryvertexs"); |
43 |
|
|
44 |
+ |
//always get the MC particles to do GEN-matching |
45 |
+ |
allNecessaryObjects.push_back("mcparticles"); |
46 |
+ |
|
47 |
|
//always get the event collection to do pile-up reweighting |
48 |
|
allNecessaryObjects.push_back("events"); |
49 |
|
|
83 |
|
|
84 |
|
} |
85 |
|
} |
86 |
< |
//make unique vector of objects we need to plot (so we can book a histogram with the number of each object |
86 |
> |
//make unique vector of objects we need to plot (so we can book a histogram with the number of each object) |
87 |
|
sort( objectsToPlot.begin(), objectsToPlot.end() ); |
88 |
|
objectsToPlot.erase( unique( objectsToPlot.begin(), objectsToPlot.end() ), objectsToPlot.end() ); |
89 |
|
|
445 |
|
} |
446 |
|
|
447 |
|
|
445 |
– |
|
448 |
|
//filling histograms |
449 |
|
for (uint histogramIndex = 0; histogramIndex != histograms.size(); histogramIndex++){ |
450 |
|
histogram currentHistogram = histograms.at(histogramIndex); |
879 |
|
//user-defined variables |
880 |
|
else if(variable == "correctedD0VertexErr") value = hypot (object->tkD0err, hypot (primaryVertex_->xError, primaryVertex_->yError)); |
881 |
|
else if(variable == "correctedD0VertexSig") value = object->correctedD0Vertex / hypot (object->tkD0err, hypot (primaryVertex_->xError, primaryVertex_->yError)); |
882 |
< |
else if(variable == "detIso") value = (object->trackIso) / object->pt; |
882 |
> |
else if(variable == "detIso") value = (object->trackIsoDR03) / object->pt; |
883 |
|
else if(variable == "relPFdBetaIso") value = (object->pfIsoR04SumChargedHadronPt + max(0.0, object->pfIsoR04SumNeutralHadronEt + object->pfIsoR04SumPhotonEt - 0.5*object->pfIsoR04SumPUPt)) / object->pt; |
884 |
|
else if(variable == "relPFrhoIso") value = ( object->chargedHadronIso + max(0.0, object->neutralHadronIso + object->photonIso - object->AEffDr03*object->rhoPrime) ) / object->pt; |
885 |
|
else if(variable == "tightID") { |
890 |
|
&& object->numberOfMatchedStations > 1 \ |
891 |
|
&& fabs(object->correctedD0Vertex) < 0.2 \ |
892 |
|
&& fabs(object->correctedDZ) < 0.5 \ |
893 |
< |
&& object->numberOfValidPixelHits > 0 \ |
893 |
> |
&& object->numberOfValidPixelHits > 0 \ |
894 |
|
&& object->numberOfLayersWithMeasurement > 5; |
893 |
– |
|
894 |
– |
|
895 |
|
} |
896 |
|
else if(variable == "tightIDdisplaced"){ |
897 |
|
value = object->isGlobalMuon > 0 \ |
898 |
– |
&& object->isPFMuon > 0 \ |
898 |
|
&& object->normalizedChi2 < 10 \ |
899 |
|
&& object->numberOfValidMuonHits > 0 \ |
900 |
|
&& object->numberOfMatchedStations > 1 \ |
902 |
|
&& object->numberOfLayersWithMeasurement > 5; |
903 |
|
} |
904 |
|
|
905 |
+ |
// else if(variable == "genMatchedID"){ |
906 |
+ |
// value = getGenMatchedParticle(object)->id; |
907 |
+ |
// } |
908 |
+ |
// else if(variable == "genMatchedMotherID"){ |
909 |
+ |
// value = getGenMatchedParticle(object)->motherId; |
910 |
+ |
// } |
911 |
+ |
// else if(variable == "genMatchedGrandmotherID"){ |
912 |
+ |
// value = getGenMatchedParticle(object)->grandMotherId; |
913 |
+ |
// } |
914 |
+ |
|
915 |
+ |
|
916 |
+ |
|
917 |
|
else{std::cout << "WARNING: invalid variable '" << variable << "'\n"; value = -999;} |
918 |
|
|
919 |
|
value = applyFunction(function, value); |
1088 |
|
else if(variable == "correctedD0VertexSig") value = object->correctedD0Vertex / hypot (object->tkD0err, hypot (primaryVertex_->xError, primaryVertex_->yError)); |
1089 |
|
else if(variable == "detIso") value = (object->trackIso) / object->pt; |
1090 |
|
else if(variable == "relPFrhoIso") value = ( object->chargedHadronIsoDR03 + max(0.0, object->neutralHadronIsoDR03 + object->photonIsoDR03 - object->AEffDr03*object->rhoPrime) ) / object->pt; |
1091 |
+ |
else if(variable == "correctedD0VertexInEB"){ |
1092 |
+ |
if(fabs(object->eta) < 0.8) value = object->correctedD0Vertex; |
1093 |
+ |
else value = -999; |
1094 |
+ |
} |
1095 |
+ |
else if(variable == "correctedD0VertexOutEB"){ |
1096 |
+ |
if(object->isEB && fabs(object->eta) > 0.8) value = object->correctedD0Vertex; |
1097 |
+ |
else value = -999; |
1098 |
+ |
} |
1099 |
+ |
else if(variable == "correctedD0VertexEE"){ |
1100 |
+ |
if(object->isEE) value = object->correctedD0Vertex; |
1101 |
+ |
else value = -999; |
1102 |
+ |
} |
1103 |
+ |
|
1104 |
+ |
else if(variable == "correctedD0BeamspotInEB"){ |
1105 |
+ |
if(fabs(object->eta) < 0.8) value = object->correctedD0; |
1106 |
+ |
else value = -999; |
1107 |
+ |
} |
1108 |
+ |
else if(variable == "correctedD0BeamspotOutEB"){ |
1109 |
+ |
if(object->isEB && fabs(object->eta) > 0.8) value = object->correctedD0; |
1110 |
+ |
else value = -999; |
1111 |
+ |
} |
1112 |
+ |
else if(variable == "correctedD0BeamspotEE"){ |
1113 |
+ |
if(object->isEE) value = object->correctedD0; |
1114 |
+ |
else value = -999; |
1115 |
+ |
} |
1116 |
+ |
|
1117 |
+ |
else if(variable == "correctedD0OriginInEB"){ |
1118 |
+ |
if(fabs(object->eta) < 0.8) value = object->tkD0; |
1119 |
+ |
else value = -999; |
1120 |
+ |
} |
1121 |
+ |
else if(variable == "correctedD0OriginOutEB"){ |
1122 |
+ |
if(object->isEB && fabs(object->eta) > 0.8) value = object->tkD0; |
1123 |
+ |
else value = -999; |
1124 |
+ |
} |
1125 |
+ |
else if(variable == "correctedD0OriginEE"){ |
1126 |
+ |
if(object->isEE) value = object->tkD0; |
1127 |
+ |
else value = -999; |
1128 |
+ |
} |
1129 |
|
|
1130 |
+ |
else if(variable == "tightIDdisplaced"){ |
1131 |
+ |
if (object->isEB) |
1132 |
+ |
{ |
1133 |
+ |
value = fabs(object->delEtaIn) < 0.004 \ |
1134 |
+ |
&& fabs (object->delPhiIn) < 0.03 \ |
1135 |
+ |
&& object->scSigmaIEtaIEta < 0.01 \ |
1136 |
+ |
&& object->hadOverEm < 0.12 \ |
1137 |
+ |
&& object->absInvEMinusInvPin < 0.05; |
1138 |
+ |
} |
1139 |
+ |
else |
1140 |
+ |
{ |
1141 |
+ |
value = fabs (object->delEtaIn) < 0.005 \ |
1142 |
+ |
&& fabs (object->delPhiIn) < 0.02 \ |
1143 |
+ |
&& object->scSigmaIEtaIEta < 0.03 \ |
1144 |
+ |
&& object->hadOverEm < 0.10 \ |
1145 |
+ |
&& object->absInvEMinusInvPin < 0.05; |
1146 |
+ |
} |
1147 |
+ |
} |
1148 |
|
|
1149 |
|
else{std::cout << "WARNING: invalid variable '" << variable << "'\n"; value = -999;} |
1150 |
|
|
1524 |
|
pt = object->pt; |
1525 |
|
value = vz - (vx * px + vy * py)/pt * (pz/pt); |
1526 |
|
} |
1527 |
< |
|
1527 |
> |
else if(variable == "v0"){ |
1528 |
> |
value = sqrt(object->vx*object->vx + object->vy*object->vy); |
1529 |
> |
} |
1530 |
> |
else if(variable == "deltaV0"){ |
1531 |
> |
value = sqrt((object->vx-primaryVertex_->x)*(object->vx-primaryVertex_->x) + (object->vy-primaryVertex_->y)*(object->vy-primaryVertex_->y)); |
1532 |
> |
} |
1533 |
> |
else if (variable == "deltaVx"){ |
1534 |
> |
value = object->vx - primaryVertex_->x; |
1535 |
> |
} |
1536 |
> |
else if (variable == "deltaVy"){ |
1537 |
> |
value = object->vy - primaryVertex_->y; |
1538 |
> |
} |
1539 |
> |
else if (variable == "deltaVz"){ |
1540 |
> |
value = object->vz - primaryVertex_->z; |
1541 |
> |
} |
1542 |
|
|
1543 |
|
|
1544 |
|
else{std::cout << "WARNING: invalid variable '" << variable << "'\n"; value = -999;} |
1707 |
|
else if(variable == "invMass"){ |
1708 |
|
TLorentzVector fourVector1(object1->px, object1->py, object1->pz, object1->energy); |
1709 |
|
TLorentzVector fourVector2(object2->px, object2->py, object2->pz, object2->energy); |
1710 |
< |
value = (fourVector1 + fourVector2).M(); |
1711 |
< |
} |
1710 |
> |
|
1711 |
> |
value = (fourVector1 + fourVector2).M();} |
1712 |
> |
else if(variable == "threeDAngle") |
1713 |
> |
{ |
1714 |
> |
TVector3 threeVector1(object1->px, object1->py, object1->pz); |
1715 |
> |
TVector3 threeVector2(object2->px, object2->py, object2->pz); |
1716 |
> |
value = (threeVector1.Angle(threeVector2)); |
1717 |
> |
} |
1718 |
> |
|
1719 |
> |
|
1720 |
> |
|
1721 |
|
else if(variable == "deltaCorrectedD0Vertex") value = object1->correctedD0Vertex - object2->correctedD0Vertex; |
1722 |
|
else if(variable == "deltaAbsCorrectedD0Vertex") value = fabs(object1->correctedD0Vertex) - fabs(object2->correctedD0Vertex); |
1723 |
< |
else if(variable == "d0Sign") value = object1->correctedD0Vertex*object2->correctedD0Vertex/fabs(object1->correctedD0Vertex*object2->correctedD0Vertex); |
1724 |
< |
|
1723 |
> |
else if(variable == "d0Sign"){ |
1724 |
> |
double d0Sign = (object1->correctedD0Vertex*object2->correctedD0Vertex)/fabs(object1->correctedD0Vertex*object2->correctedD0Vertex); |
1725 |
> |
if(d0Sign < 0) value = -0.5; |
1726 |
> |
else if (d0Sign > 0) value = 0.5; |
1727 |
> |
else value = -999; |
1728 |
> |
} |
1729 |
> |
else if(variable == "muon1CorrectedD0Vertex"){ |
1730 |
> |
value = object1->correctedD0Vertex; |
1731 |
> |
} |
1732 |
> |
else if(variable == "muon2CorrectedD0Vertex"){ |
1733 |
> |
value = object2->correctedD0Vertex; |
1734 |
> |
} |
1735 |
|
else{std::cout << "WARNING: invalid variable '" << variable << "'\n"; value = -999;} |
1736 |
|
|
1737 |
+ |
|
1738 |
+ |
|
1739 |
+ |
|
1740 |
+ |
|
1741 |
+ |
|
1742 |
+ |
|
1743 |
+ |
|
1744 |
|
value = applyFunction(function, value); |
1745 |
|
|
1746 |
|
return value; |
1755 |
|
else if(variable == "invMass"){ |
1756 |
|
TLorentzVector fourVector1(object1->px, object1->py, object1->pz, object1->energy); |
1757 |
|
TLorentzVector fourVector2(object2->px, object2->py, object2->pz, object2->energy); |
1758 |
< |
value = (fourVector1 + fourVector2).M(); |
1759 |
< |
} |
1758 |
> |
|
1759 |
> |
value = (fourVector1 + fourVector2).M();} |
1760 |
> |
else if(variable == "threeDAngle") |
1761 |
> |
{ |
1762 |
> |
TVector3 threeVector1(object1->px, object1->py, object1->pz); |
1763 |
> |
TVector3 threeVector2(object2->px, object2->py, object2->pz); |
1764 |
> |
value = (threeVector1.Angle(threeVector2)); |
1765 |
> |
} |
1766 |
> |
|
1767 |
> |
|
1768 |
> |
|
1769 |
> |
|
1770 |
|
else if(variable == "deltaCorrectedD0Vertex") value = object1->correctedD0Vertex - object2->correctedD0Vertex; |
1771 |
|
else if(variable == "deltaAbsCorrectedD0Vertex") value = fabs(object1->correctedD0Vertex) - fabs(object2->correctedD0Vertex); |
1772 |
< |
else if(variable == "d0Sign") value = object1->correctedD0Vertex*object2->correctedD0Vertex/fabs(object1->correctedD0Vertex*object2->correctedD0Vertex); |
1772 |
> |
|
1773 |
> |
|
1774 |
> |
|
1775 |
> |
|
1776 |
> |
|
1777 |
> |
else if(variable == "d0Sign"){ |
1778 |
> |
double d0Sign = (object1->correctedD0Vertex*object2->correctedD0Vertex)/fabs(object1->correctedD0Vertex*object2->correctedD0Vertex); |
1779 |
> |
if(d0Sign < 0) value = -0.5; |
1780 |
> |
else if (d0Sign > 0) value = 0.5; |
1781 |
> |
else value = -999; |
1782 |
> |
} |
1783 |
> |
else if(variable == "electron1CorrectedD0Vertex"){ |
1784 |
> |
value = object1->correctedD0Vertex; |
1785 |
> |
} |
1786 |
> |
else if(variable == "electron2CorrectedD0Vertex"){ |
1787 |
> |
value = object2->correctedD0Vertex; |
1788 |
> |
} |
1789 |
|
|
1790 |
|
else{std::cout << "WARNING: invalid variable '" << variable << "'\n"; value = -999;} |
1791 |
|
|
1803 |
|
else if(variable == "invMass"){ |
1804 |
|
TLorentzVector fourVector1(object1->px, object1->py, object1->pz, object1->energy); |
1805 |
|
TLorentzVector fourVector2(object2->px, object2->py, object2->pz, object2->energy); |
1806 |
< |
value = (fourVector1 + fourVector2).M(); |
1807 |
< |
} |
1806 |
> |
|
1807 |
> |
value = (fourVector1 + fourVector2).M();} |
1808 |
> |
else if(variable == "threeDAngle") |
1809 |
> |
{ |
1810 |
> |
TVector3 threeVector1(object1->px, object1->py, object1->pz); |
1811 |
> |
TVector3 threeVector2(object2->px, object2->py, object2->pz); |
1812 |
> |
value = (threeVector1.Angle(threeVector2)); |
1813 |
> |
} |
1814 |
> |
|
1815 |
> |
|
1816 |
> |
|
1817 |
> |
|
1818 |
|
else if(variable == "deltaCorrectedD0Vertex") value = object1->correctedD0Vertex - object2->correctedD0Vertex; |
1819 |
|
else if(variable == "deltaAbsCorrectedD0Vertex") value = fabs(object1->correctedD0Vertex) - fabs(object2->correctedD0Vertex); |
1820 |
< |
else if(variable == "d0Sign") value = object1->correctedD0Vertex*object2->correctedD0Vertex/fabs(object1->correctedD0Vertex*object2->correctedD0Vertex); |
1820 |
> |
else if(variable == "d0Sign"){ |
1821 |
> |
double d0Sign = (object1->correctedD0Vertex*object2->correctedD0Vertex)/fabs(object1->correctedD0Vertex*object2->correctedD0Vertex); |
1822 |
> |
if(d0Sign < 0) value = -0.5; |
1823 |
> |
else if (d0Sign > 0) value = 0.5; |
1824 |
> |
else value = -999; |
1825 |
> |
} |
1826 |
> |
else if(variable == "electronCorrectedD0Vertex"){ |
1827 |
> |
value = object1->correctedD0Vertex; |
1828 |
> |
} |
1829 |
> |
else if(variable == "muonCorrectedD0Vertex"){ |
1830 |
> |
value = object2->correctedD0Vertex; |
1831 |
> |
} |
1832 |
> |
|
1833 |
|
|
1834 |
|
else{std::cout << "WARNING: invalid variable '" << variable << "'\n"; value = -999;} |
1835 |
|
|
1843 |
|
OSUAnalysis::applyFunction(string function, double value){ |
1844 |
|
|
1845 |
|
if(function == "abs") value = fabs(value); |
1846 |
+ |
else if(function == "fabs") value = fabs(value); |
1847 |
+ |
|
1848 |
|
|
1849 |
+ |
else if(function == "") value = value; |
1850 |
+ |
else{std::cout << "WARNING: invalid function '" << function << "'\n";} |
1851 |
|
|
1852 |
|
return value; |
1853 |
|
|
2109 |
|
} |
2110 |
|
|
2111 |
|
|
2112 |
+ |
// template <class InputObject> |
2113 |
+ |
// BNmcparticle* getGenMatchedParticle(InputObject object){ |
2114 |
+ |
|
2115 |
+ |
// BNmcparticle bestMatch; |
2116 |
+ |
// std::cout << bestMatch.energy() << std:endl; |
2117 |
+ |
// for(BNmcparticleCollection::const_iterator mcparticle = mcParticles_->begin (); mcparticle != mcParticles_->end (); mcparticle++){ |
2118 |
+ |
|
2119 |
+ |
// } |
2120 |
+ |
// return bestMatch; |
2121 |
+ |
// } |
2122 |
+ |
|
2123 |
|
|
2124 |
|
DEFINE_FWK_MODULE(OSUAnalysis); |
2125 |
|
|