ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/OSUT3Analysis/AnaTools/plugins/OSUAnalysis.cc
(Generate patch)

Comparing UserCode/OSUT3Analysis/AnaTools/plugins/OSUAnalysis.cc (file contents):
Revision 1.18 by lantonel, Fri Feb 22 10:38:08 2013 UTC vs.
Revision 1.21 by qpython, Wed Feb 27 14:16:26 2013 UTC

# Line 41 | Line 41 | OSUAnalysis::OSUAnalysis (const edm::Par
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  
# Line 80 | Line 83 | OSUAnalysis::OSUAnalysis (const edm::Par
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  
# Line 442 | Line 445 | OSUAnalysis::analyze (const edm::Event &
445      }
446  
447  
445
448      //filling histograms
449      for (uint histogramIndex = 0; histogramIndex != histograms.size(); histogramIndex++){
450        histogram currentHistogram = histograms.at(histogramIndex);
# Line 877 | Line 879 | OSUAnalysis::valueLookup (const BNmuon*
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") {
# Line 888 | Line 890 | OSUAnalysis::valueLookup (const BNmuon*
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    \
# Line 903 | Line 902 | OSUAnalysis::valueLookup (const BNmuon*
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);
# Line 1077 | Line 1088 | OSUAnalysis::valueLookup (const BNelectr
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  
# Line 1457 | Line 1524 | OSUAnalysis::valueLookup (const BNmcpart
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;}
# Line 1626 | Line 1707 | OSUAnalysis::valueLookup (const BNmuon*
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;
# Line 1648 | Line 1755 | OSUAnalysis::valueLookup (const BNelectr
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  
# Line 1670 | Line 1803 | OSUAnalysis::valueLookup (const BNelectr
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  
# Line 1688 | Line 1843 | double
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  
# Line 1950 | Line 2109 | void OSUAnalysis::fill2DHistogram(TH2* h
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  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines