CDF_1994_S2952106.cc
Go to the documentation of this file.
00001 // -*- C++ -*- 00002 #include "Rivet/Analysis.hh" 00003 #include "Rivet/RivetYODA.hh" 00004 #include "Rivet/Tools/Logging.hh" 00005 #include "Rivet/Projections/FastJets.hh" 00006 #include "Rivet/Projections/VetoedFinalState.hh" 00007 #include "Rivet/Projections/VisibleFinalState.hh" 00008 #include "Rivet/Projections/MissingMomentum.hh" 00009 00010 namespace Rivet { 00011 00012 00013 /// @brief CDF Run I color coherence analysis 00014 /// @author Andy Buckley 00015 /// @author Lars Sonnenschein 00016 class CDF_1994_S2952106 : public Analysis { 00017 public: 00018 00019 /// Constructor 00020 CDF_1994_S2952106() : Analysis("CDF_1994_S2952106") 00021 { 00022 } 00023 00024 00025 /// @name Analysis methods 00026 //@{ 00027 00028 void init() { 00029 const FinalState fs(-4.2, 4.2); 00030 addProjection(fs, "FS"); 00031 addProjection(FastJets(fs, FastJets::CDFJETCLU, 0.7), "Jets"); 00032 00033 // Zero passed-cuts event weight counters 00034 _sumw = 0; 00035 00036 // Output histograms 00037 _histJet1Et = bookHisto1D(1,1,1); 00038 _histJet2Et = bookHisto1D(2,1,1); 00039 _histJet3eta = bookScatter2D(3,1,1); 00040 _histR23 = bookScatter2D(4,1,1); 00041 _histAlpha = bookScatter2D(5,1,1); 00042 00043 // Temporary histos: these are the ones we actually fill for the plots which require correction 00044 _tmphistJet3eta.reset(new Histo1D(referenceData(3,1,1))); 00045 _tmphistR23.reset( new Histo1D(referenceData(4,1,1))); 00046 _tmphistAlpha.reset( new Histo1D(referenceData(5,1,1))); 00047 } 00048 00049 00050 00051 // Do the analysis 00052 void analyze(const Event & event) { 00053 const Jets jets = applyProjection<FastJets>(event, "Jets").jetsByEt(); 00054 MSG_DEBUG("Jet multiplicity before any cuts = " << jets.size()); 00055 00056 // ETs only from jets: 00057 double et_sinphi_sum = 0; 00058 double et_cosphi_sum = 0; 00059 double et_sum = 0; 00060 for (size_t i = 0; i< jets.size(); ++i) { 00061 et_sinphi_sum += jets[i].momentum().Et() * sin(jets[i].phi()); 00062 et_cosphi_sum += jets[i].momentum().Et() * cos(jets[i].phi()); 00063 et_sum += jets[i].momentum().Et(); 00064 } 00065 00066 // ET requirement 00067 if (sqrt(sqr(et_sinphi_sum) + sqr(et_cosphi_sum))/et_sum > 6.0) vetoEvent; 00068 00069 // Check jet requirements 00070 if (jets.size() < 3) vetoEvent; 00071 if (jets[0].momentum().pT() < 110*GeV) vetoEvent; 00072 if (jets[2].momentum().pT() < 10*GeV) vetoEvent; 00073 00074 // More jet 1,2,3 checks 00075 FourMomentum pj1(jets[0].momentum()), pj2(jets[1].momentum()), pj3(jets[2].momentum()); 00076 if (fabs(pj1.eta()) > 0.7 || fabs(pj2.eta()) > 0.7) vetoEvent; 00077 MSG_DEBUG("Jet 1 & 2 eta, pT requirements fulfilled"); 00078 00079 // Require that jets are back-to-back within 20 degrees in phi 00080 if ((PI - deltaPhi(pj1.phi(), pj2.phi())) > (20/180.0)*PI) vetoEvent; 00081 MSG_DEBUG("Jet 1 & 2 phi requirement fulfilled"); 00082 00083 const double weight = event.weight(); 00084 _sumw += weight; 00085 00086 // Fill histos 00087 _histJet1Et->fill(pj1.pT(), weight); 00088 _histJet2Et->fill(pj2.pT(), weight); 00089 _tmphistJet3eta->fill(pj3.eta(), weight); 00090 _tmphistR23->fill(deltaR(pj2, pj3), weight); 00091 00092 // Calc and plot alpha 00093 const double dPhi = deltaPhi(pj3.phi(), pj2.phi()); 00094 const double dH = sign(pj2.eta()) * (pj3.eta() - pj2.eta()); 00095 const double alpha = atan(dH/dPhi); 00096 _tmphistAlpha->fill(alpha*180./PI, weight); 00097 } 00098 00099 00100 /// Apply bin-wise detector correction factors 00101 void finalize() { 00102 00103 // Normal scalings 00104 normalize(_histJet1Et, 12.3); 00105 normalize(_histJet2Et, 12.3); 00106 00107 // eta3 correction 00108 const double eta3_CDF_sim[] = 00109 { 0.0013, 0.0037, 0.0047, 0.0071, 0.0093, 0.0117, 0.0151, 0.0149, 0.0197, 0.0257, 00110 0.0344, 0.0409, 0.0481, 0.0454, 0.0394, 0.0409, 0.0387, 0.0387, 0.0322, 0.0313, 00111 0.0290, 0.0309, 0.0412, 0.0417, 0.0412, 0.0397, 0.0417, 0.0414, 0.0376, 0.0316, 00112 0.0270, 0.0186, 0.0186, 0.0132, 0.0127, 0.0106, 0.0071, 0.0040, 0.0020, 0.0013 }; 00113 const double eta3_CDF_sim_err[] = 00114 { 0.0009, 0.0009, 0.0007, 0.0007, 0.0007, 0.0010, 0.0012, 0.0012, 0.0013, 0.0016, 00115 0.0017, 0.0020, 0.0020, 0.0022, 0.0020, 0.0020, 0.0018, 0.0018, 0.0016, 0.0017, 00116 0.0017, 0.0019, 0.0020, 0.0021, 0.0020, 0.0020, 0.0019, 0.0020, 0.0018, 0.0017, 00117 0.0017, 0.0014, 0.0014, 0.0009, 0.0010, 0.0009, 0.0009, 0.0008, 0.0008, 0.0009 }; 00118 const double eta3_Ideal_sim[] = 00119 { 0.0017, 0.0030, 0.0033, 0.0062, 0.0062, 0.0112, 0.0177, 0.0164, 0.0196, 0.0274, 00120 0.0351, 0.0413, 0.0520, 0.0497, 0.0448, 0.0446, 0.0375, 0.0329, 0.0291, 0.0272, 00121 0.0233, 0.0288, 0.0384, 0.0396, 0.0468, 0.0419, 0.0459, 0.0399, 0.0355, 0.0329, 00122 0.0274, 0.0230, 0.0201, 0.0120, 0.0100, 0.0080, 0.0051, 0.0051, 0.0010, 0.0010 }; 00123 vector<Point2D> points; 00124 for (size_t i = 0; i < 40; ++i) { 00125 const double yval = _tmphistJet3eta->bin(i).area() * (eta3_CDF_sim[i]/eta3_Ideal_sim[i]); 00126 const double yerr = _tmphistJet3eta->bin(i).areaErr() * (eta3_CDF_sim_err[i]/eta3_Ideal_sim[i]); 00127 points.push_back(Point2D(0, yval/_sumw, 0, yerr/_sumw)); 00128 } 00129 _histJet3eta->addPoints(points); 00130 00131 // R23 correction 00132 const double R23_CDF_sim[] = 00133 { 0.0005, 0.0161, 0.0570, 0.0762, 0.0723, 0.0705, 0.0598, 0.0563, 0.0557, 0.0579, 00134 0.0538, 0.0522, 0.0486, 0.0449, 0.0418, 0.0361, 0.0326, 0.0304, 0.0252, 0.0212, 00135 0.0173, 0.0176, 0.0145, 0.0127, 0.0103, 0.0065, 0.0049, 0.0045, 0.0035, 0.0029, 00136 0.0024, 0.0014, 0.0011, 0.0010, 0.0009 }; 00137 const double R23_CDF_sim_err[] = 00138 { 0.0013, 0.0009, 0.0022, 0.0029, 0.0026, 0.0024, 0.0022, 0.0025, 0.0023, 0.0024, 00139 0.0021, 0.0021, 0.0021, 0.0021, 0.0021, 0.0019, 0.0019, 0.0016, 0.0017, 0.0014, 00140 0.0010, 0.0014, 0.0012, 0.0013, 0.0010, 0.0011, 0.0010, 0.0010, 0.0010, 0.0011, 00141 0.0011, 0.0009, 0.0008, 0.0008, 0.0009 }; 00142 const double R23_Ideal_sim[] = 00143 { 0.0005, 0.0176, 0.0585, 0.0862, 0.0843, 0.0756, 0.0673, 0.0635, 0.0586, 0.0619, 00144 0.0565, 0.0515, 0.0466, 0.0472, 0.0349, 0.0349, 0.0266, 0.0254, 0.0204, 0.0179, 00145 0.0142, 0.0134, 0.0101, 0.0090, 0.0080, 0.0034, 0.0030, 0.0033, 0.0027, 0.0021, 00146 0.0012, 0.0006, 0.0004, 0.0005, 0.0003 }; 00147 points.clear(); 00148 for (size_t i = 0; i < 35; ++i) { 00149 const double yval = _tmphistR23->bin(i).area() * (R23_CDF_sim[i]/R23_Ideal_sim[i]); 00150 const double yerr = _tmphistR23->bin(i).areaErr() * (R23_CDF_sim_err[i]/R23_Ideal_sim[i]); 00151 points.push_back(Point2D(0, yval/_sumw, 0, yerr/_sumw)); 00152 } 00153 _histR23->addPoints(points); 00154 00155 // alpha correction 00156 const double alpha_CDF_sim[] = 00157 { 0.0517, 0.0461, 0.0490, 0.0452, 0.0451, 0.0435, 0.0317, 0.0287, 0.0294, 0.0261, 00158 0.0231, 0.0220, 0.0233, 0.0192, 0.0213, 0.0166, 0.0176, 0.0146, 0.0136, 0.0156, 00159 0.0142, 0.0152, 0.0151, 0.0147, 0.0164, 0.0186, 0.0180, 0.0210, 0.0198, 0.0189, 00160 0.0197, 0.0211, 0.0270, 0.0236, 0.0243, 0.0269, 0.0257, 0.0276, 0.0246, 0.0286 }; 00161 const double alpha_CDF_sim_err[] = 00162 { 0.0024, 0.0025, 0.0024, 0.0024, 0.0024, 0.0022, 0.0019, 0.0018, 0.0019, 0.0016, 00163 0.0017, 0.0017, 0.0019, 0.0013, 0.0017, 0.0014, 0.0016, 0.0013, 0.0012, 0.0009, 00164 0.0014, 0.0014, 0.0014, 0.0014, 0.0014, 0.0015, 0.0014, 0.0016, 0.0016, 0.0015, 00165 0.0016, 0.0016, 0.0019, 0.0017, 0.0019, 0.0018, 0.0018, 0.0018, 0.0018, 0.0019 }; 00166 const double alpha_Ideal_sim[] = 00167 { 0.0552, 0.0558, 0.0583, 0.0550, 0.0495, 0.0433, 0.0393, 0.0346, 0.0331, 0.0296, 00168 0.0258, 0.0196, 0.0171, 0.0179, 0.0174, 0.0141, 0.0114, 0.0096, 0.0076, 0.0087, 00169 0.0099, 0.0079, 0.0102, 0.0114, 0.0124, 0.0130, 0.0165, 0.0160, 0.0177, 0.0190, 00170 0.0232, 0.0243, 0.0238, 0.0248, 0.0235, 0.0298, 0.0292, 0.0291, 0.0268, 0.0316 }; 00171 points.clear(); 00172 for (size_t i = 0; i < 40; ++i) { 00173 const double yval = _tmphistAlpha->bin(i).area() * (alpha_CDF_sim[i]/alpha_Ideal_sim[i]); 00174 const double yerr = _tmphistAlpha->bin(i).areaErr() * (alpha_CDF_sim_err[i]/alpha_Ideal_sim[i]); 00175 points.push_back(Point2D(0, yval/_sumw, 0, yerr/_sumw)); 00176 } 00177 _histAlpha->addPoints(points); 00178 } 00179 00180 //@} 00181 00182 00183 private: 00184 00185 /// @name Event weight counters 00186 //@{ 00187 00188 double _sumw; 00189 00190 //@} 00191 00192 00193 /// @name Histograms 00194 //@{ 00195 00196 /// Straightforward output histos 00197 Histo1DPtr _histJet1Et, _histJet2Et; 00198 00199 /// Output histos which need to have correction factors applied 00200 Scatter2DPtr _histR23, _histJet3eta, _histAlpha; 00201 00202 /// Temporary histos, to be converted to DPSes 00203 Histo1DPtr _tmphistR23, _tmphistJet3eta, _tmphistAlpha; 00204 00205 //@} 00206 00207 }; 00208 00209 00210 00211 // The hook for the plugin system 00212 DECLARE_RIVET_PLUGIN(CDF_1994_S2952106); 00213 00214 } Generated on Fri Dec 21 2012 15:03:39 for The Rivet MC analysis system by ![]() |