00001
00002 #include "Rivet/Analysis.hh"
00003 #include "Rivet/RivetAIDA.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 #include "LWH/Histogram1D.h"
00010
00011 namespace Rivet {
00012
00013
00014
00015
00016
00017 class CDF_1994_S2952106 : public Analysis {
00018 public:
00019
00020
00021 CDF_1994_S2952106() : Analysis("CDF_1994_S2952106")
00022 {
00023 }
00024
00025
00026
00027
00028
00029 void init() {
00030 const FinalState fs(-4.2, 4.2);
00031 addProjection(fs, "FS");
00032 addProjection(FastJets(fs, FastJets::CDFJETCLU, 0.7), "Jets");
00033
00034
00035 _sumw = 0;
00036
00037
00038 _histJet1Et = bookHistogram1D(1,1,1);
00039 _histJet2Et = bookHistogram1D(2,1,1);
00040 _histJet3eta = bookDataPointSet(3,1,1);
00041 _histR23 = bookDataPointSet(4,1,1);
00042 _histAlpha = bookDataPointSet(5,1,1);
00043
00044
00045 _tmphistJet3eta.reset(new LWH::Histogram1D(binEdges(3,1,1)));
00046 _tmphistR23.reset( new LWH::Histogram1D(binEdges(4,1,1)));
00047 _tmphistAlpha.reset( new LWH::Histogram1D(binEdges(5,1,1)));
00048 }
00049
00050
00051
00052
00053 void analyze(const Event & event) {
00054 const Jets jets = applyProjection<FastJets>(event, "Jets").jetsByEt();
00055 MSG_DEBUG("Jet multiplicity before any cuts = " << jets.size());
00056
00057
00058 double et_sinphi_sum = 0;
00059 double et_cosphi_sum = 0;
00060 double et_sum = 0;
00061 for (size_t i = 0; i< jets.size(); ++i) {
00062 et_sinphi_sum += jets[i].momentum().Et() * sin(jets[i].phi());
00063 et_cosphi_sum += jets[i].momentum().Et() * cos(jets[i].phi());
00064 et_sum += jets[i].momentum().Et();
00065 }
00066
00067
00068 if (sqrt(sqr(et_sinphi_sum) + sqr(et_cosphi_sum))/et_sum > 6.0) vetoEvent;
00069
00070
00071 if (jets.size() < 3) vetoEvent;
00072 if (jets[0].momentum().pT() < 110*GeV) vetoEvent;
00073 if (jets[2].momentum().pT() < 10*GeV) vetoEvent;
00074
00075
00076 FourMomentum pj1(jets[0].momentum()), pj2(jets[1].momentum()), pj3(jets[2].momentum());
00077 if (fabs(pj1.eta()) > 0.7 || fabs(pj2.eta()) > 0.7) vetoEvent;
00078 MSG_DEBUG("Jet 1 & 2 eta, pT requirements fulfilled");
00079
00080
00081 if ((PI - deltaPhi(pj1.phi(), pj2.phi())) > (20/180.0)*PI) vetoEvent;
00082 MSG_DEBUG("Jet 1 & 2 phi requirement fulfilled");
00083
00084 const double weight = event.weight();
00085 _sumw += weight;
00086
00087
00088 _histJet1Et->fill(pj1.pT(), weight);
00089 _histJet2Et->fill(pj2.pT(), weight);
00090 _tmphistJet3eta->fill(pj3.eta(), weight);
00091 _tmphistR23->fill(deltaR(pj2, pj3), weight);
00092
00093
00094 const double dPhi = deltaPhi(pj3.phi(), pj2.phi());
00095 const double dH = sign(pj2.eta()) * (pj3.eta() - pj2.eta());
00096 const double alpha = atan(dH/dPhi);
00097 _tmphistAlpha->fill(alpha*180./PI, weight);
00098 }
00099
00100
00101
00102 void finalize() {
00103
00104
00105 normalize(_histJet1Et, 12.3);
00106 normalize(_histJet2Et, 12.3);
00107
00108
00109 const double eta3_CDF_sim[] =
00110 { 0.0013, 0.0037, 0.0047, 0.0071, 0.0093, 0.0117, 0.0151, 0.0149, 0.0197, 0.0257,
00111 0.0344, 0.0409, 0.0481, 0.0454, 0.0394, 0.0409, 0.0387, 0.0387, 0.0322, 0.0313,
00112 0.0290, 0.0309, 0.0412, 0.0417, 0.0412, 0.0397, 0.0417, 0.0414, 0.0376, 0.0316,
00113 0.0270, 0.0186, 0.0186, 0.0132, 0.0127, 0.0106, 0.0071, 0.0040, 0.0020, 0.0013 };
00114 const double eta3_CDF_sim_err[] =
00115 { 0.0009, 0.0009, 0.0007, 0.0007, 0.0007, 0.0010, 0.0012, 0.0012, 0.0013, 0.0016,
00116 0.0017, 0.0020, 0.0020, 0.0022, 0.0020, 0.0020, 0.0018, 0.0018, 0.0016, 0.0017,
00117 0.0017, 0.0019, 0.0020, 0.0021, 0.0020, 0.0020, 0.0019, 0.0020, 0.0018, 0.0017,
00118 0.0017, 0.0014, 0.0014, 0.0009, 0.0010, 0.0009, 0.0009, 0.0008, 0.0008, 0.0009 };
00119 const double eta3_Ideal_sim[] =
00120 { 0.0017, 0.0030, 0.0033, 0.0062, 0.0062, 0.0112, 0.0177, 0.0164, 0.0196, 0.0274,
00121 0.0351, 0.0413, 0.0520, 0.0497, 0.0448, 0.0446, 0.0375, 0.0329, 0.0291, 0.0272,
00122 0.0233, 0.0288, 0.0384, 0.0396, 0.0468, 0.0419, 0.0459, 0.0399, 0.0355, 0.0329,
00123 0.0274, 0.0230, 0.0201, 0.0120, 0.0100, 0.0080, 0.0051, 0.0051, 0.0010, 0.0010 };
00124 vector<double> yval_eta3, yerr_eta3;
00125 for (size_t i = 0; i < 40; ++i) {
00126 const double yval = _tmphistJet3eta->binHeight(i) * (eta3_CDF_sim[i]/eta3_Ideal_sim[i]);
00127 yval_eta3.push_back(yval/_sumw);
00128 const double yerr = _tmphistJet3eta->binError(i) * (eta3_CDF_sim_err[i]/eta3_Ideal_sim[i]);
00129 yerr_eta3.push_back(yerr/_sumw);
00130 }
00131 _histJet3eta->setCoordinate(1, yval_eta3, yerr_eta3);
00132
00133
00134 const double R23_CDF_sim[] =
00135 { 0.0005, 0.0161, 0.0570, 0.0762, 0.0723, 0.0705, 0.0598, 0.0563, 0.0557, 0.0579,
00136 0.0538, 0.0522, 0.0486, 0.0449, 0.0418, 0.0361, 0.0326, 0.0304, 0.0252, 0.0212,
00137 0.0173, 0.0176, 0.0145, 0.0127, 0.0103, 0.0065, 0.0049, 0.0045, 0.0035, 0.0029,
00138 0.0024, 0.0014, 0.0011, 0.0010, 0.0009 };
00139 const double R23_CDF_sim_err[] =
00140 { 0.0013, 0.0009, 0.0022, 0.0029, 0.0026, 0.0024, 0.0022, 0.0025, 0.0023, 0.0024,
00141 0.0021, 0.0021, 0.0021, 0.0021, 0.0021, 0.0019, 0.0019, 0.0016, 0.0017, 0.0014,
00142 0.0010, 0.0014, 0.0012, 0.0013, 0.0010, 0.0011, 0.0010, 0.0010, 0.0010, 0.0011,
00143 0.0011, 0.0009, 0.0008, 0.0008, 0.0009 };
00144 const double R23_Ideal_sim[] =
00145 { 0.0005, 0.0176, 0.0585, 0.0862, 0.0843, 0.0756, 0.0673, 0.0635, 0.0586, 0.0619,
00146 0.0565, 0.0515, 0.0466, 0.0472, 0.0349, 0.0349, 0.0266, 0.0254, 0.0204, 0.0179,
00147 0.0142, 0.0134, 0.0101, 0.0090, 0.0080, 0.0034, 0.0030, 0.0033, 0.0027, 0.0021,
00148 0.0012, 0.0006, 0.0004, 0.0005, 0.0003 };
00149 vector<double> yval_R23, yerr_R23;
00150 for (size_t i = 0; i < 35; ++i) {
00151 const double yval = _tmphistR23->binHeight(i) * (R23_CDF_sim[i]/R23_Ideal_sim[i]);
00152 yval_R23.push_back(yval/_sumw);
00153 const double yerr = _tmphistR23->binError(i) * (R23_CDF_sim_err[i]/R23_Ideal_sim[i]);
00154 yerr_R23.push_back(yerr/_sumw);
00155 }
00156 _histR23->setCoordinate(1, yval_R23, yerr_R23);
00157
00158
00159 const double alpha_CDF_sim[] =
00160 { 0.0517, 0.0461, 0.0490, 0.0452, 0.0451, 0.0435, 0.0317, 0.0287, 0.0294, 0.0261,
00161 0.0231, 0.0220, 0.0233, 0.0192, 0.0213, 0.0166, 0.0176, 0.0146, 0.0136, 0.0156,
00162 0.0142, 0.0152, 0.0151, 0.0147, 0.0164, 0.0186, 0.0180, 0.0210, 0.0198, 0.0189,
00163 0.0197, 0.0211, 0.0270, 0.0236, 0.0243, 0.0269, 0.0257, 0.0276, 0.0246, 0.0286 };
00164 const double alpha_CDF_sim_err[] =
00165 { 0.0024, 0.0025, 0.0024, 0.0024, 0.0024, 0.0022, 0.0019, 0.0018, 0.0019, 0.0016,
00166 0.0017, 0.0017, 0.0019, 0.0013, 0.0017, 0.0014, 0.0016, 0.0013, 0.0012, 0.0009,
00167 0.0014, 0.0014, 0.0014, 0.0014, 0.0014, 0.0015, 0.0014, 0.0016, 0.0016, 0.0015,
00168 0.0016, 0.0016, 0.0019, 0.0017, 0.0019, 0.0018, 0.0018, 0.0018, 0.0018, 0.0019 };
00169 const double alpha_Ideal_sim[] =
00170 { 0.0552, 0.0558, 0.0583, 0.0550, 0.0495, 0.0433, 0.0393, 0.0346, 0.0331, 0.0296,
00171 0.0258, 0.0196, 0.0171, 0.0179, 0.0174, 0.0141, 0.0114, 0.0096, 0.0076, 0.0087,
00172 0.0099, 0.0079, 0.0102, 0.0114, 0.0124, 0.0130, 0.0165, 0.0160, 0.0177, 0.0190,
00173 0.0232, 0.0243, 0.0238, 0.0248, 0.0235, 0.0298, 0.0292, 0.0291, 0.0268, 0.0316 };
00174 vector<double> yval_alpha, yerr_alpha;
00175 for (size_t i = 0; i < 40; ++i) {
00176 const double yval = _tmphistAlpha->binHeight(i) * (alpha_CDF_sim[i]/alpha_Ideal_sim[i]);
00177 yval_alpha.push_back(yval/_sumw);
00178 const double yerr = _tmphistAlpha->binError(i) * (alpha_CDF_sim_err[i]/alpha_Ideal_sim[i]);
00179 yerr_alpha.push_back(yerr/_sumw);
00180 }
00181 _histAlpha->setCoordinate(1, yval_alpha, yerr_alpha);
00182 }
00183
00184
00185
00186
00187 private:
00188
00189
00190
00191
00192 double _sumw;
00193
00194
00195
00196
00197
00198
00199
00200
00201 AIDA::IHistogram1D *_histJet1Et, *_histJet2Et;
00202
00203
00204 AIDA::IDataPointSet *_histR23, *_histJet3eta, *_histAlpha;
00205
00206
00207 shared_ptr<LWH::IHistogram1D> _tmphistR23, _tmphistJet3eta, _tmphistAlpha;
00208
00209
00210
00211 };
00212
00213
00214
00215
00216 DECLARE_RIVET_PLUGIN(CDF_1994_S2952106);
00217
00218 }