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