OPAL_2001_S4553896.cc
Go to the documentation of this file.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/FinalState.hh"
00007
00008 namespace Rivet {
00009
00010
00011 namespace {
00012
00013
00014
00015
00016
00017
00018
00019 double calc_BZ(const vector<fastjet::PseudoJet>& jets) {
00020 assert(jets.size() == 4);
00021 Vector3 p12 = cross( momentum3(jets[0]), momentum3(jets[1]));
00022 Vector3 p34 = cross( momentum3(jets[2]), momentum3(jets[3]));
00023 return dot(p12,p34) / (p12.mod()*p34.mod());
00024 }
00025
00026
00027
00028
00029 double calc_KSW(const vector<fastjet::PseudoJet>& jets) {
00030 assert(jets.size() == 4);
00031 Vector3 p13 = cross( momentum3(jets[0]), momentum3(jets[2]));
00032 Vector3 p24 = cross( momentum3(jets[1]), momentum3(jets[3]));
00033 Vector3 p14 = cross( momentum3(jets[0]), momentum3(jets[3]));
00034 Vector3 p23 = cross( momentum3(jets[1]), momentum3(jets[2]));
00035 return cos (0.5*( acos (dot(p14,p23) / (p14.mod()*p23.mod())) +
00036 acos (dot(p13,p24) / (p13.mod()*p24.mod())) ));
00037 }
00038
00039
00040
00041
00042 double calc_NR(const vector<fastjet::PseudoJet>& jets) {
00043 assert(jets.size() == 4);
00044 Vector3 p12 = momentum3(jets[0]) - momentum3(jets[1]);
00045 Vector3 p34 = momentum3(jets[2]) - momentum3(jets[3]);
00046 return dot(p12,p34) / (p12.mod()*p34.mod());
00047 }
00048
00049
00050
00051 double calc_ALPHA34(const vector<fastjet::PseudoJet>& jets) {
00052 assert(jets.size() == 4);
00053 Vector3 p3 = momentum3(jets[2]);
00054 Vector3 p4 = momentum3(jets[3]);
00055 return dot(p3,p4) / (p3.mod()*p4.mod());
00056 }
00057
00058
00059
00060 }
00061
00062
00063 class OPAL_2001_S4553896 : public Analysis {
00064 public:
00065
00066
00067
00068
00069
00070 OPAL_2001_S4553896()
00071 : Analysis("OPAL_2001_S4553896")
00072 { }
00073
00074
00075
00076
00077 public:
00078
00079
00080
00081
00082
00083 void init() {
00084
00085
00086 const FinalState fs;
00087 addProjection(fs, "FS");
00088 addProjection(FastJets(fs, FastJets::DURHAM, 0.7), "Jets");
00089
00090
00091
00092 _h_BZ = bookHistogram1D(3, 1, 1);
00093 _h_KSW = bookHistogram1D(4, 1, 1);
00094 _h_NR = bookHistogram1D(5, 1, 1);
00095 _h_ALPHA34 = bookHistogram1D(6, 1, 1);
00096 }
00097
00098
00099
00100 void analyze(const Event& event) {
00101 const double weight = event.weight();
00102
00103
00104 if (applyProjection<FinalState>(event, "FS").particles().size() < 2) {
00105 vetoEvent;
00106 }
00107
00108 const FastJets& fastjets = applyProjection<FastJets>(event, "Jets");
00109 if (fastjets.clusterSeq()) {
00110 vector<fastjet::PseudoJet> jets;
00111 foreach (const fastjet::PseudoJet& jet,
00112 fastjet::sorted_by_E(fastjets.clusterSeq()->exclusive_jets_ycut(0.008))) {
00113 if (jet.E()>3.0*GeV) jets.push_back(jet);
00114 }
00115 if (jets.size() == 4) {
00116 _h_BZ->fill(fabs(calc_BZ(jets)), weight);
00117 _h_KSW->fill(calc_KSW(jets), weight);
00118 _h_NR->fill(fabs(calc_NR(jets)), weight);
00119 _h_ALPHA34->fill(calc_ALPHA34(jets), weight);
00120 }
00121 }
00122
00123
00124 }
00125
00126
00127
00128 void finalize() {
00129
00130
00131 normalize(_h_BZ);
00132 normalize(_h_KSW);
00133 normalize(_h_NR);
00134 normalize(_h_ALPHA34);
00135
00136 }
00137
00138
00139
00140
00141 private:
00142
00143
00144
00145
00146 AIDA::IHistogram1D *_h_BZ;
00147 AIDA::IHistogram1D *_h_KSW;
00148 AIDA::IHistogram1D *_h_NR;
00149 AIDA::IHistogram1D *_h_ALPHA34;
00150
00151
00152 };
00153
00154
00155
00156
00157 DECLARE_RIVET_PLUGIN(OPAL_2001_S4553896);
00158
00159 }