Rivet analyses
Measurement of charged-particle event shape variables
Experiment: ATLAS (LHC)
Inspire ID: 1124167
Status: VALIDATED
Authors: - Deepak Kar
References: - Expt page: ATLAS-STDM-2011-32 - arXiv: 1207.6915 - Phys.Rev. D88 (2013) 032004 - 10.1103/PhysRevD.88.032004
Beams: p+ p+
Beam energies: (3500.0, 3500.0)GeV
Run details: - Minimum bias events with at least 6 charged particles at 7 TeV
The measurement of charged-particle event shape variables is presented in inclusive inelastic pp collisions at a center-of-mass energy of 7 TeV using the ATLAS detector at the LHC. The observables studied are the transverse thrust, thrust minor, and transverse sphericity, each defined using the final-state charged particles momentum components perpendicular to the beam direction. Events with at least six charged particles are selected by a minimum-bias trigger. In addition to the differential distributions, the evolution of each event shape variable as a function of the leading charged-particle transverse momentum, charged-particle multiplicity, and summed transverse momentum is presented.
Source
code:ATLAS_2012_I1124167.cc
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/ChargedFinalState.hh"
#include "Rivet/Projections/FinalState.hh"
#include "Rivet/Projections/Thrust.hh"
#include "Rivet/Projections/Sphericity.hh"
namespace Rivet {
/// Rivet analysis class for ATLAS min bias event shapes
class ATLAS_2012_I1124167 : public Analysis {
public:
/// Constructor
ATLAS_2012_I1124167()
: Analysis("ATLAS_2012_I1124167") { }
/// Initialization, called once before running
void init() {
// Projections
ChargedFinalState cfs(Cuts::abseta < 2.5 && Cuts::pT > 0.5*GeV);
declare(cfs, "CFS");
// Book histograms
book(_hist_T_05_25 ,1,1,1);
book(_hist_T_05 ,2,1,1);
book(_hist_T_25_50 ,1,1,2);
book(_hist_T_25 ,2,1,2);
book(_hist_T_50_75 ,1,1,3);
book(_hist_T_50 ,2,1,3);
book(_hist_T_75_100,1,1,4);
book(_hist_T_75 ,2,1,4);
book(_hist_T_100 ,2,1,5);
book(_hist_TM_05_25 ,3,1,1);
book(_hist_TM_05 ,4,1,1);
book(_hist_TM_25_50 ,3,1,2);
book(_hist_TM_25 ,4,1,2);
book(_hist_TM_50_75 ,3,1,3);
book(_hist_TM_50 ,4,1,3);
book(_hist_TM_75_100,3,1,4);
book(_hist_TM_75 ,4,1,4);
book(_hist_TM_100 ,4,1,5);
book(_hist_S_05_25 ,5,1,1);
book(_hist_S_05 ,6,1,1);
book(_hist_S_25_50 ,5,1,2);
book(_hist_S_25 ,6,1,2);
book(_hist_S_50_75 ,5,1,3);
book(_hist_S_50 ,6,1,3);
book(_hist_S_75_100,5,1,4);
book(_hist_S_75 ,6,1,4);
book(_hist_S_100 ,6,1,5);
book(_hist_T_N ,7,1,1);
book(_hist_TM_N ,7,1,2);
book(_hist_S_N ,7,1,3);
book(_hist_T_S ,8,1,1);
book(_hist_TM_S ,8,1,2);
book(_hist_S_S ,8,1,3);
}
void analyze(const Event& event) {
// CFS projection and particles
const Particles& particles500 = apply<ChargedFinalState>(event, "CFS").particlesByPt();
// Require at least 6 charged particles
if (particles500.size() < 6) vetoEvent;
// Preparation for Thrust calculation
vector<Vector3> momenta;
// Counters
double num500 = 0;
double ptSum500 = 0;
double pTlead = particles500[0].pT()/GeV;
// Loop over particles
for (const Particle& p : particles500) {
num500 += 1;
ptSum500 += p.pT()/GeV;
// Transverse Thrust calculation requires p_z to be set to 0
Vector3 mom = p.p3();
mom.setZ(0.0);
momenta.push_back(mom);
}
// If only 2 particles, we need to use a ghost so that Thrust.calc() doesn't return 1.
if (momenta.size() == 2) {
momenta.push_back(Vector3(1e-10*MeV, 0., 0.));
}
// Actual thrust calculation
Thrust thrust;
thrust.calc(momenta);
const double T = 1.0 - thrust.thrust();
const double TM = thrust.thrustMajor();
Sphericity sphericity;
sphericity.calc(momenta);
double S = sphericity.transSphericity();
if ( std::isnan(S) ) S = -1.0; // put this in the underflow bin
// Fill histos, most inclusive first
// pTlead > 0.5
_hist_T_05->fill(T );
_hist_TM_05->fill(TM);
_hist_S_05->fill(S );
// pTlead 0.5 - 2.5
if (pTlead <= 2.5) {
_hist_T_05_25->fill(T );
_hist_TM_05_25->fill(TM);
_hist_S_05_25->fill(S );
}
// pTlead > 2.5
if (pTlead > 2.5) {
_hist_T_25->fill(T );
_hist_TM_25->fill(TM);
_hist_S_25->fill(S );
}
// pTlead 2.5 - .5
if (inRange(pTlead, 2.5, 5.0)) {
_hist_T_25_50->fill(T );
_hist_TM_25_50->fill(TM);
_hist_S_25_50->fill(S );
}
// pTlead > 5
if (pTlead > 5) {
_hist_T_50->fill(T );
_hist_TM_50->fill(TM);
_hist_S_50->fill(S );
}
// pTlead 5 - 7.5
if (inRange(pTlead, 5.0, 7.5)) {
_hist_T_50_75->fill(T );
_hist_TM_50_75->fill(TM);
_hist_S_50_75->fill(S );
}
// pTlead > 7.5
if (pTlead > 7.5) {
_hist_T_75->fill(T );
_hist_TM_75->fill(TM);
_hist_S_75->fill(S );
}
// pTlead 7.5 - 10
if (inRange(pTlead, 7.5, 10)) {
_hist_T_75_100->fill(T );
_hist_TM_75_100->fill(TM);
_hist_S_75_100->fill(S );
}
// pTlead > 10
if (pTlead > 10) {
_hist_T_100->fill(T );
_hist_TM_100->fill(TM);
_hist_S_100->fill(S );
}
// Profiles Nch vs. ES
_hist_T_N->fill(num500, T);
_hist_TM_N->fill(num500, TM);
_hist_S_N->fill(num500, S);
// Profiles pTsum vs. ES
_hist_T_S->fill(ptSum500, T);
_hist_TM_S->fill(ptSum500, TM);
_hist_S_S->fill(ptSum500, S);
}
void finalize() {
normalize(_hist_T_05_25);
normalize(_hist_T_05);
normalize(_hist_T_25_50);
normalize(_hist_T_25);
normalize(_hist_T_50_75);
normalize(_hist_T_50);
normalize(_hist_T_75_100);
normalize(_hist_T_75);
normalize(_hist_T_100);
normalize(_hist_TM_05_25);
normalize(_hist_TM_05);
normalize(_hist_TM_25_50);
normalize(_hist_TM_25);
normalize(_hist_TM_50_75);
normalize(_hist_TM_50);
normalize(_hist_TM_75_100);
normalize(_hist_TM_75);
normalize(_hist_TM_100);
normalize(_hist_S_05_25);
normalize(_hist_S_05);
normalize(_hist_S_25_50);
normalize(_hist_S_25);
normalize(_hist_S_50_75);
normalize(_hist_S_50);
normalize(_hist_S_75_100);
normalize(_hist_S_75);
normalize(_hist_S_100);
}
private:
Histo1DPtr _hist_T_05_25, _hist_T_05, _hist_T_25_50, _hist_T_25, _hist_T_50_75, _hist_T_50, _hist_T_75_100, _hist_T_75, _hist_T_100;
Histo1DPtr _hist_TM_05_25, _hist_TM_05, _hist_TM_25_50, _hist_TM_25, _hist_TM_50_75, _hist_TM_50, _hist_TM_75_100, _hist_TM_75, _hist_TM_100;
Histo1DPtr _hist_S_05_25, _hist_S_05, _hist_S_25_50, _hist_S_25, _hist_S_50_75, _hist_S_50, _hist_S_75_100, _hist_S_75, _hist_S_100;
Profile1DPtr _hist_T_N, _hist_TM_N, _hist_S_N;
Profile1DPtr _hist_T_S, _hist_TM_S, _hist_S_S;
};
RIVET_DECLARE_PLUGIN(ATLAS_2012_I1124167);
}