Page Menu
Home
HEPForge
Search
Configure Global Search
Log In
Files
F8723345
CDF_2006_S6653332.cc
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
4 KB
Subscribers
None
CDF_2006_S6653332.cc
View Options
// -*- C++ -*-
#include
"Rivet/RivetAIDA.hh"
#include
"Rivet/Tools/Logging.hh"
#include
"Rivet/Analyses/CDF_2006_S6653332.hh"
#include
"Rivet/Tools/ParticleIDMethods.hh"
#include
"Rivet/Projections/FinalState.hh"
#include
"Rivet/Projections/VetoedFinalState.hh"
#include
"Rivet/Projections/ChargedFinalState.hh"
#include
"Rivet/Projections/InvMassFinalState.hh"
#include
"Rivet/Projections/FastJets.hh"
#include
"Rivet/Projections/ChargedLeptons.hh"
namespace
Rivet
{
CDF_2006_S6653332
::
CDF_2006_S6653332
()
:
_Rjet
(
0.7
),
_JetPtCut
(
20.
),
_JetEtaCut
(
1.5
),
_sumWeightsWithZ
(
0.0
),
_sumWeightsWithZJet
(
0.0
)
{
setBeams
(
PROTON
,
ANTIPROTON
);
setNeedsCrossSection
(
true
);
const
FinalState
fs
(
-
3.6
,
3.6
);
addProjection
(
fs
,
"FS"
);
// Create a final state with any e+e- or mu+mu- pair with
// invariant mass 76 -> 106 GeV and ET > 20 (Z decay products)
std
::
vector
<
std
::
pair
<
long
,
long
>
>
vids
;
vids
.
push_back
(
make_pair
(
ELECTRON
,
POSITRON
));
vids
.
push_back
(
make_pair
(
MUON
,
ANTIMUON
));
FinalState
fs2
(
-
3.6
,
3.6
);
InvMassFinalState
invfs
(
fs2
,
vids
,
76
*
GeV
,
106
*
GeV
);
addProjection
(
invfs
,
"INVFS"
);
// Make a final state without the Z decay products for jet clustering
VetoedFinalState
vfs
(
fs
);
vfs
.
addVetoOnThisFinalState
(
invfs
);
addProjection
(
vfs
,
"VFS"
);
addProjection
(
FastJets
(
vfs
,
FastJets
::
CDFMIDPOINT
,
0.7
),
"Jets"
);
}
void
CDF_2006_S6653332
::
init
()
{
// Book histograms
_sigmaBJet
=
bookHistogram1D
(
1
,
1
,
1
,
"$
\\
sigma(
\\
text{Z + b jet})$"
,
"$E$ / GeV"
,
"$
\\
sigma(Z+b)$ / pb"
);
_ratioBJetToZ
=
bookHistogram1D
(
2
,
1
,
1
,
"$
\\
sigma(
\\
text{Z + b jet}) /
\\
sigma(
\\
text{Z})$"
,
"$E$ / GeV"
,
"$
\\
sigma(Z+b) /
\\
sigma(Z)$ / pb"
);
_ratioBJetToJet
=
bookHistogram1D
(
3
,
1
,
1
,
"$
\\
sigma(Z + b jet) /
\\
sigma(Z + jet)"
,
"$E$ / GeV"
,
"$
\\
sigma(
\\
text{Z+b}) /
\\
sigma(
\\
text{Z+j})$ /pb"
);
}
// Do the analysis
void
CDF_2006_S6653332
::
analyze
(
const
Event
&
event
)
{
// Check we have an l+l- pair that passes the kinematic cuts
// Get the Z decay products (mu+mu- or e+e- pair)
const
InvMassFinalState
&
invMassFinalState
=
applyProjection
<
InvMassFinalState
>
(
event
,
"INVFS"
);
const
ParticleVector
&
ZDecayProducts
=
invMassFinalState
.
particles
();
// make sure we have 2 Z decay products (mumu or ee)
if
(
ZDecayProducts
.
size
()
<
2
)
vetoEvent
(
event
);
_sumWeightsWithZ
+=
event
.
weight
();
// @todo: write out a warning if there are more than two decay products
FourMomentum
Zmom
=
ZDecayProducts
[
0
].
momentum
()
+
ZDecayProducts
[
1
].
momentum
();
// Put all b-quarks in a vector
ParticleVector
bquarks
;
/// @todo Provide nicer looping
for
(
GenEvent
::
particle_const_iterator
p
=
event
.
genEvent
().
particles_begin
();
p
!=
event
.
genEvent
().
particles_end
();
++
p
)
{
if
(
fabs
((
*
p
)
->
pdg_id
())
==
BQUARK
)
{
bquarks
.
push_back
(
Particle
(
**
p
));
}
}
// Get jets
const
FastJets
&
jetpro
=
applyProjection
<
FastJets
>
(
event
,
"Jets"
);
getLog
()
<<
Log
::
DEBUG
<<
"Jet multiplicity before any pT cut = "
<<
jetpro
.
size
()
<<
endl
;
const
PseudoJets
&
jets
=
jetpro
.
pseudoJetsByPt
();
getLog
()
<<
Log
::
DEBUG
<<
"jetlist size = "
<<
jets
.
size
()
<<
endl
;
int
numBJet
=
0
;
int
numJet
=
0
;
// for each b-jet plot the ET and the eta of the jet, normalise to the total cross section at the end
// for each event plot N jet and pT(Z), normalise to the total cross section at the end
for
(
PseudoJets
::
const_iterator
jt
=
jets
.
begin
();
jt
!=
jets
.
end
();
++
jt
)
{
// select jets that pass the kinematic cuts
if
(
jt
->
perp
()
>
_JetPtCut
&&
fabs
(
jt
->
rapidity
())
<=
_JetEtaCut
)
{
numJet
++
;
// does the jet contain a b-quark?
bool
bjet
=
false
;
foreach
(
const
Particle
&
bquark
,
bquarks
)
{
if
(
deltaR
(
jt
->
rapidity
(),
jt
->
phi
(),
bquark
.
momentum
().
rapidity
(),
bquark
.
momentum
().
azimuthalAngle
())
<=
_Rjet
)
{
bjet
=
true
;
break
;
}
}
// end loop around b-jets
if
(
bjet
)
{
numBJet
++
;
}
}
}
// end loop around jets
if
(
numJet
>
0
)
_sumWeightsWithZJet
+=
event
.
weight
();
if
(
numBJet
>
0
)
{
_sigmaBJet
->
fill
(
1960.0
,
event
.
weight
());
_ratioBJetToZ
->
fill
(
1960.0
,
event
.
weight
());
_ratioBJetToJet
->
fill
(
1960.0
,
event
.
weight
());
}
}
// Finalize
void
CDF_2006_S6653332
::
finalize
()
{
getLog
()
<<
Log
::
DEBUG
<<
"Total sum of weights = "
<<
sumOfWeights
()
<<
endl
;
getLog
()
<<
Log
::
DEBUG
<<
"Sum of weights for Z production in mass range = "
<<
_sumWeightsWithZ
<<
endl
;
getLog
()
<<
Log
::
DEBUG
<<
"Sum of weights for Z+jet production in mass range = "
<<
_sumWeightsWithZJet
<<
endl
;
_sigmaBJet
->
scale
(
crossSection
()
/
sumOfWeights
());
_ratioBJetToZ
->
scale
(
1.0
/
_sumWeightsWithZ
);
_ratioBJetToJet
->
scale
(
1.0
/
_sumWeightsWithZJet
);
}
}
File Metadata
Details
Attached
Mime Type
text/x-c
Expires
Mon, Jan 20, 8:17 PM (8 h, 58 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4242197
Default Alt Text
CDF_2006_S6653332.cc (4 KB)
Attached To
rRIVETSVN rivetsvn
Event Timeline
Log In to Comment