ATLAS Offline Software
Loading...
Searching...
No Matches
MuonSelector Class Reference

#include <MuonSelector.h>

Inheritance diagram for MuonSelector:
Collaboration diagram for MuonSelector:

Public Member Functions

 MuonSelector ()
 ~MuonSelector ()
 MuonSelector (const MuonSelector &)=delete
MuonSelectoroperator= (const MuonSelector &)=delete
bool passSelection (const xAOD::Muon *pxMuon)
void setDebug (bool debug)
virtual void Init ()
void doIsoSelection (bool doIso)
void doIPSelection (bool doIPsel)
void doMCPSelection (bool domcp)
virtual void finalize ()
void SetPtCut (double newvalue)
double GetPtCut ()
virtual bool Reco ()
void SetMuonQualityRequirement (std::string newname)
void SetCustomMuonSelectionTool (ToolHandle< CP::IMuonSelectionTool > mst)

Static Public Member Functions

template<class T>
static CLHEP::Hep3Vector calculateMomentum (const T *pP)
template<class T>
static float EvalInvMass (const T *pxP1, const T *pxP2, float fMass1, float fMass2=invalidAnswer)
template<class T>
static float EvalInvMass (const T *pxP1, const T *pxP2, const T *pxp3, const T *pxP4, float fMass1, float fMass2=-999.9, float fMass3=-999.9, float fMass4=invalidAnswer)
template<class T>
static float EvalDiMuInvMass (const T *pxP1, const T *pxP2)
template<class T>
static float EvalFourMuInvMass (const T *pxP1, const T *pxP2, const T *pxP3, const T *pxP4)
template<class T>
static float EvaluateAngle (const T *pxP1, const T *pxP2)
template<class T>
static float EvalPtDiff (const T *pxP1, const T *pxP2)
template<class T>
static float EvalPhiDiff (const T *pxP1, const T *pxP2)
template<class T>
static float EvalEtaDiff (const T *pxP1, const T *pxP2)
template<class T>
static float EvalPt (const T *pxP1, const T *pxP2)
template<class T>
static float EvalPhi (const T *pxP1, const T *pxP2)
template<class T>
static float EvalEta (const T *pxP1, const T *pxP2)
template<class T>
static float EvalCharge (const T *pxP1, const T *pxP2)
template<class T>
static float EvalTransverseMass (const T *pxP1, float fMETx, float fMETy, float fMass1, float fMass2=invalidAnswer)
template<class T>
static float EvalTransverseMass (const T *pxP1, float fMETx, float fMETy)
template<class T>
static float EvalTransverseMass (const T *pxP1, const T *pxP2, float fMETx, float fMETy, float fMass1, float fMass2=invalidAnswer)
template<class T>
static float EvalTransverseMass (const T *pxP1, const T *pxP2, float fMETx, float fMETy)

Public Attributes

ToolHandle< CP::IMuonSelectionToolm_muonSelectionTool

Static Public Attributes

static constexpr float invalidAnswer {-999.9f}

Protected Member Functions

virtual void BookHistograms ()

Protected Attributes

unsigned int m_uPassedEvents
std::map< unsigned int, TH1F * > m_x1DHistograms
std::map< unsigned int, TH2F * > m_x2DHistograms
std::map< unsigned int, TProfile * > m_x1DProfHistograms
std::map< unsigned int, TProfile2D * > m_x2DProfHistograms
std::string m_xSampleName

Private Types

enum  HISTOS_1D { NMDT , NCSC , ECONE , NUM_1HISTOS }
typedef EventAnalysis PARENT

Private Member Functions

bool passQualCuts ()
bool passPtCuts ()
bool passIsolCuts ()
bool passIPCuts ()
void Register ()

Private Attributes

unsigned int m_uNumInstances = 0U
MsgStream * m_msgStream
const xAOD::Muonm_pxMuon {nullptr}
xAOD::Muon::Quality m_requestedMuonQuality {xAOD::Muon::Quality::VeryLoose}
double m_coneSize {}
unsigned char m_ucJMuon_Cut
double m_IsoCut
bool m_bCutOnCombKine
float m_fEtaCut
double m_combPtCut
float m_ptMSCut
float m_diffZCut
float m_diffPtCut
float m_pVZCut
float m_fIDPtCut
float m_fIDChiPerDofCut
int m_IDSiHitsCut
unsigned char m_ucID_PIXCut
unsigned char m_ucID_SCTCut
unsigned char m_ucID_TRTCut
bool m_doDebug
bool m_doQualSelection
bool m_doIsoSelection
bool m_doPtSelection
bool m_doIPSelection
bool m_doMCPSelection
bool m_bLock
unsigned int m_testedmuons {}
unsigned int m_passqual {}
unsigned int m_passiso {}
unsigned int m_passpt {}
unsigned int m_passip {}
unsigned int m_passmcp {}
unsigned int m_passall {}

Detailed Description

Definition at line 33 of file MuonSelector.h.

Member Typedef Documentation

◆ PARENT

Definition at line 64 of file MuonSelector.h.

Member Enumeration Documentation

◆ HISTOS_1D

Enumerator
NMDT 
NCSC 
ECONE 
NUM_1HISTOS 

Definition at line 128 of file MuonSelector.h.

Constructor & Destructor Documentation

◆ MuonSelector() [1/2]

MuonSelector::MuonSelector ( )

Definition at line 43 of file MuonSelector.cxx.

43 :
44 m_muonSelectionTool("CP::MuonSelectionTool/MuonSelectionTool"),
45 m_doDebug ( false ),
46 m_doQualSelection ( false ),
47 m_doIsoSelection ( false ),
48 m_doPtSelection ( true ),
49 m_doIPSelection ( true ),
50 m_doMCPSelection ( true )
51{
52 // SOC commented by Salva -- R22 test --
53 //++s_uNumInstances;
54 //std::stringstream xTmp; xTmp << s_uNumInstances;
55 //m_xSampleName = "MuID_" + xTmp.str();
56 // EOC commented by Salva -- R22 test --
57 unsigned int inst = ++m_uNumInstances;
58 m_xSampleName = "MuID_" + std::to_string(inst);
59 m_pxMuon = nullptr;
60 m_bLock = false;
61
62
63 // requested muon tag (tight, medium, loose..)
64 m_requestedMuonQuality = xAOD::Muon::Quality::Medium;
65
66
67 m_coneSize = 0.4;
68 m_ucJMuon_Cut = 0; //not used
69 m_IsoCut = 0.2;
70
71 m_bCutOnCombKine = false; //not used
72 m_fEtaCut = 2.5;
73 //m_fEtaCut = 1.9;
74 m_combPtCut = 15.0*CLHEP::GeV; // GeV/c
75 // m_combPtCut = .01*CLHEP::GeV; // GeV/c
76
77 //m_ptMSCut = 10.0*CLHEP::GeV;
78 m_ptMSCut = 0.0*CLHEP::GeV;
79 m_diffZCut = 1.5*CLHEP::mm; // mm --> used to be 10.0*CLHEP::mm // Changed by Salva 26/january/2016
80 m_diffPtCut = 15.0*CLHEP::GeV; // not used
81 m_pVZCut = 150.0*CLHEP::mm; // mm
82
83 m_fIDPtCut = 0.0; // GeV/c
85 m_IDSiHitsCut = 8;
86 m_ucID_PIXCut = 1; // Hits
87 m_ucID_SCTCut = 4; // Hits
88 m_ucID_TRTCut = 0; // Hits
89
90 m_msgStream = new MsgStream(Athena::getMessageSvc(), "InDetPerformanceMonitoring");
91
92 // stats
93 m_testedmuons = 0;
94 m_passqual = 0;
95 m_passiso = 0;
96 m_passpt = 0;
97 m_passip = 0;
98 m_passmcp = 0;
99 m_passall = 0;
100
101 // done
102}
std::string m_xSampleName
double m_coneSize
unsigned int m_testedmuons
unsigned int m_passiso
const xAOD::Muon * m_pxMuon
float m_diffPtCut
bool m_bCutOnCombKine
bool m_doIsoSelection
unsigned char m_ucID_TRTCut
ToolHandle< CP::IMuonSelectionTool > m_muonSelectionTool
unsigned char m_ucID_PIXCut
unsigned int m_passip
float m_fIDChiPerDofCut
double m_IsoCut
unsigned int m_uNumInstances
unsigned int m_passpt
bool m_doQualSelection
unsigned char m_ucJMuon_Cut
unsigned char m_ucID_SCTCut
bool m_doMCPSelection
double m_combPtCut
MsgStream * m_msgStream
unsigned int m_passqual
xAOD::Muon::Quality m_requestedMuonQuality
unsigned int m_passmcp
unsigned int m_passall
IMessageSvc * getMessageSvc(bool quiet=false)

◆ ~MuonSelector()

MuonSelector::~MuonSelector ( )

Definition at line 105 of file MuonSelector.cxx.

106{
108 delete m_msgStream;
109}

◆ MuonSelector() [2/2]

MuonSelector::MuonSelector ( const MuonSelector & )
delete

Member Function Documentation

◆ BookHistograms()

void MuonSelector::BookHistograms ( )
protectedvirtual

Reimplemented from EventAnalysis.

Definition at line 207 of file MuonSelector.cxx.

208{
209}

◆ calculateMomentum()

template<class T>
CLHEP::Hep3Vector EventAnalysis::calculateMomentum ( const T * pP)
staticinherited

Definition at line 92 of file EventAnalysis.h.

92 {
93 const auto & p4(pP->p4());
94 return CLHEP::Hep3Vector(p4.Px() * EAna::CGeV , p4.Py() * EAna::CGeV, p4.Pz() * EAna::CGeV);
95}
const float CGeV

◆ doIPSelection()

void MuonSelector::doIPSelection ( bool doIPsel)
inline

Definition at line 51 of file MuonSelector.h.

51{m_doIPSelection = doIPsel;}

◆ doIsoSelection()

void MuonSelector::doIsoSelection ( bool doIso)
inline

Definition at line 50 of file MuonSelector.h.

50{m_doIsoSelection = doIso;}

◆ doMCPSelection()

void MuonSelector::doMCPSelection ( bool domcp)
inline

Definition at line 52 of file MuonSelector.h.

52{m_doMCPSelection = domcp;}

◆ EvalCharge()

template<class T>
float EventAnalysis::EvalCharge ( const T * pxP1,
const T * pxP2 )
staticinherited

Definition at line 239 of file EventAnalysis.h.

240{
241 // Check integrity of inputs.
242 if ( !pxP1 || !pxP2 ) return invalidAnswer;
243 return static_cast<float>( pxP1->charge() + pxP2->charge() );
244}
static constexpr float invalidAnswer

◆ EvalDiMuInvMass()

template<class T>
float EventAnalysis::EvalDiMuInvMass ( const T * pxP1,
const T * pxP2 )
staticinherited

Definition at line 98 of file EventAnalysis.h.

99{
100 // Check integrity of inputs.
101 if ( !pxP1 || !pxP2 ) return invalidAnswer;
102
103 // Evaluate Di-mu invariant mass.
104 return EvalInvMass( pxP1, pxP2, EAna::g_fMuonMass );
105}
static float EvalInvMass(const T *pxP1, const T *pxP2, float fMass1, float fMass2=invalidAnswer)
const float g_fMuonMass

◆ EvalEta()

template<class T>
float EventAnalysis::EvalEta ( const T * pxP1,
const T * pxP2 )
staticinherited

Definition at line 230 of file EventAnalysis.h.

231{
232 // Check integrity of inputs.
233 if ( !pxP1 || !pxP2 ) return invalidAnswer;
234 CLHEP::Hep3Vector xTmp1 = calculateMomentum(pxP1);
235 CLHEP::Hep3Vector xTmp2 = calculateMomentum(pxP2);
236 return static_cast<float>( (xTmp1 + xTmp2).pseudoRapidity() );
237}
static CLHEP::Hep3Vector calculateMomentum(const T *pP)

◆ EvalEtaDiff()

template<class T>
float EventAnalysis::EvalEtaDiff ( const T * pxP1,
const T * pxP2 )
staticinherited

Definition at line 202 of file EventAnalysis.h.

203{
204 // Check integrity of inputs.
205 if ( !pxP1 || !pxP2 ) return invalidAnswer;
206 // Evaluate the angle.
207 CLHEP::Hep3Vector xTmp1 = calculateMomentum(pxP1);
208 CLHEP::Hep3Vector xTmp2 = calculateMomentum(pxP2);
209 return static_cast<float>( xTmp1.polarAngle(xTmp2) );
210}

◆ EvalFourMuInvMass()

template<class T>
float EventAnalysis::EvalFourMuInvMass ( const T * pxP1,
const T * pxP2,
const T * pxP3,
const T * pxP4 )
staticinherited

Definition at line 124 of file EventAnalysis.h.

125{
126 // Check integrity of inputs.
127 if ( !pxP1 || !pxP2 || !pxP3 || !pxP4) return invalidAnswer;
128
129 // Evaluate invariant mass.
130 return EvalInvMass( pxP1, pxP2, pxP3, pxP4, EAna::g_fMuonMass );
131}

◆ EvalInvMass() [1/2]

template<class T>
float EventAnalysis::EvalInvMass ( const T * pxP1,
const T * pxP2,
const T * pxp3,
const T * pxP4,
float fMass1,
float fMass2 = -999.9,
float fMass3 = -999.9,
float fMass4 = invalidAnswer )
staticinherited

Definition at line 133 of file EventAnalysis.h.

135{
136 // Check integrity of inputs.No tachyons.
137 if ( fMass1 < 0.0f ) return invalidAnswer;
138 if ( !pxP1 || !pxP2 || !pxP3 || !pxP4) return invalidAnswer;
139
140 // Set masses equal if required by user
141 fMass2 = ( fMass2 < 0.0f ) ? fMass1 : fMass2;
142 fMass3 = ( fMass3 < 0.0f ) ? fMass1 : fMass3;
143 fMass4 = ( fMass4 < 0.0f ) ? fMass1 : fMass4;
144
145 // Evaluate invariant mass.
146 CLHEP::Hep3Vector xTmp1 = CLHEP::Hep3Vector( pxP1->p4().Px() * EAna::CGeV, pxP1->p4().Py() * EAna::CGeV, pxP1->p4().Pz() * EAna::CGeV );
147 CLHEP::Hep3Vector xTmp2 = CLHEP::Hep3Vector( pxP2->p4().Px() * EAna::CGeV, pxP2->p4().Py() * EAna::CGeV, pxP2->p4().Pz() * EAna::CGeV );
148 CLHEP::Hep3Vector xTmp3 = CLHEP::Hep3Vector( pxP3->p4().Px() * EAna::CGeV, pxP3->p4().Py() * EAna::CGeV, pxP3->p4().Pz() * EAna::CGeV );
149 CLHEP::Hep3Vector xTmp4 = CLHEP::Hep3Vector( pxP4->p4().Px() * EAna::CGeV, pxP4->p4().Py() * EAna::CGeV, pxP4->p4().Pz() * EAna::CGeV );
150
151 CLHEP::HepLorentzVector xLVec; xLVec.setVectM ( xTmp1, fMass1 );
152 CLHEP::HepLorentzVector xLVec2; xLVec2.setVectM( xTmp2, fMass2 );
153 CLHEP::HepLorentzVector xLVec3; xLVec3.setVectM( xTmp3, fMass3 );
154 CLHEP::HepLorentzVector xLVec4; xLVec4.setVectM( xTmp4, fMass4 );
155
156 xLVec += xLVec2;
157 xLVec += xLVec3;
158 xLVec += xLVec4;
159
160 return static_cast<float>( xLVec.m() );
161}

◆ EvalInvMass() [2/2]

template<class T>
float EventAnalysis::EvalInvMass ( const T * pxP1,
const T * pxP2,
float fMass1,
float fMass2 = invalidAnswer )
staticinherited

Definition at line 107 of file EventAnalysis.h.

109{
110 // Check integrity of inputs.No tachyons.
111 if ( fMass1 < 0.0f ) return invalidAnswer;
112 if ( !pxP1 || !pxP2 ) return invalidAnswer;
113 // Set masses equal if required by user
114 fMass2 = ( fMass2 < 0.0f ) ? fMass1 : fMass2;
115 // Evaluate invariant mass.
116 CLHEP::Hep3Vector xTmp1 = calculateMomentum(pxP1);
117 CLHEP::Hep3Vector xTmp2 = calculateMomentum(pxP2);
118 CLHEP::HepLorentzVector xLVec1; xLVec1.setVectM( xTmp1, fMass1 );
119 CLHEP::HepLorentzVector xLVec2; xLVec2.setVectM( xTmp2, fMass2 );
120 return static_cast<float>( xLVec1.invariantMass( xLVec2 ) );
121}

◆ EvalPhi()

template<class T>
float EventAnalysis::EvalPhi ( const T * pxP1,
const T * pxP2 )
staticinherited

Definition at line 221 of file EventAnalysis.h.

222{
223 // Check integrity of inputs.
224 if ( !pxP1 || !pxP2 ) return invalidAnswer;
225 CLHEP::Hep3Vector xTmp1 = calculateMomentum(pxP1);
226 CLHEP::Hep3Vector xTmp2 = calculateMomentum(pxP2);
227 return static_cast<float>( (xTmp1 + xTmp2).phi() );
228}

◆ EvalPhiDiff()

template<class T>
float EventAnalysis::EvalPhiDiff ( const T * pxP1,
const T * pxP2 )
staticinherited

Definition at line 191 of file EventAnalysis.h.

192{
193 // Check integrity of inputs.
194 if ( !pxP1 || !pxP2 ) return invalidAnswer;
195 // Evaluate the angle.
196 CLHEP::Hep3Vector xTmp1 = calculateMomentum(pxP1);
197 CLHEP::Hep3Vector xTmp2 = calculateMomentum(pxP2);
198 return static_cast<float>( xTmp1.deltaPhi(xTmp2) );
199}

◆ EvalPt()

template<class T>
float EventAnalysis::EvalPt ( const T * pxP1,
const T * pxP2 )
staticinherited

Definition at line 212 of file EventAnalysis.h.

213{
214 // Check integrity of inputs.
215 if ( !pxP1 || !pxP2 ) return invalidAnswer;
216 CLHEP::Hep3Vector xTmp1 = calculateMomentum(pxP1);
217 CLHEP::Hep3Vector xTmp2 = calculateMomentum(pxP2);
218 return static_cast<float>( (xTmp1 + xTmp2).perp() );
219}

◆ EvalPtDiff()

template<class T>
float EventAnalysis::EvalPtDiff ( const T * pxP1,
const T * pxP2 )
staticinherited

Definition at line 174 of file EventAnalysis.h.

175{
176 // Check integrity of inputs.
177 if ( !pxP1 || !pxP2 ) return invalidAnswer;
178 // Evaluate the difference between the momenta. Signed using positive - negative if appropriate.
179 if ( pxP1->charge() > 0.5f )
180 {
181 return static_cast<float>( pxP1->pt() * EAna::CGeV - pxP2->pt() * EAna::CGeV );
182 }
183 else
184 {
185 return static_cast<float>( pxP2->pt() * EAna::CGeV - pxP1->pt() * EAna::CGeV );
186 }
187}

◆ EvalTransverseMass() [1/4]

template<class T>
float EventAnalysis::EvalTransverseMass ( const T * pxP1,
const T * pxP2,
float fMETx,
float fMETy )
staticinherited

Definition at line 272 of file EventAnalysis.h.

273{
274 // Check integrity of inputs.
275 if ( !pxP1 || !pxP2 ) return invalidAnswer;
276 // Evaluate Di-mu invariant mass.
277 return EvalTransverseMass( pxP1, pxP2, fMETx, fMETy, EAna::g_fMuonMass );
278}
static float EvalTransverseMass(const T *pxP1, float fMETx, float fMETy, float fMass1, float fMass2=invalidAnswer)

◆ EvalTransverseMass() [2/4]

template<class T>
float EventAnalysis::EvalTransverseMass ( const T * pxP1,
const T * pxP2,
float fMETx,
float fMETy,
float fMass1,
float fMass2 = invalidAnswer )
staticinherited

Definition at line 280 of file EventAnalysis.h.

282{
283 // Check integrity of inputs.No tachyons.
284 if ( fMass1 < 0.0f ) return invalidAnswer;
285 if ( !pxP1 || !pxP2 ) return invalidAnswer;
286 // Set masses equal if required by user.
287 fMass2 = ( fMass2 < 0.0f ) ? fMass1 : fMass2;
288 // Evaluate invariant mass.
289 CLHEP::Hep3Vector xTmp1 = CLHEP::Hep3Vector( pxP1->p4().Px() * EAna::CGeV, pxP1->p4().Py() * EAna::CGeV, 0.0f );
290 CLHEP::Hep3Vector xTmp2 = CLHEP::Hep3Vector( pxP2->p4().Px() * EAna::CGeV, pxP2->p4().Py() * EAna::CGeV, 0.0f );
291 CLHEP::Hep3Vector xTmp12 = xTmp1 + xTmp2;
292 CLHEP::Hep3Vector xTmp3 = CLHEP::Hep3Vector( fMETx, fMETy, 0.0f );
293 CLHEP::HepLorentzVector xLVec1; xLVec1.setVectM( xTmp12, fMass1 );
294 CLHEP::HepLorentzVector xLVec2; xLVec2.setVectM( xTmp3, 0.0f );
295 return static_cast<float>( xLVec1.invariantMass( xLVec2 ) );
296}

◆ EvalTransverseMass() [3/4]

template<class T>
float EventAnalysis::EvalTransverseMass ( const T * pxP1,
float fMETx,
float fMETy )
staticinherited

Definition at line 247 of file EventAnalysis.h.

248{
249 // Check integrity of inputs.
250 if ( !pxP1 ) return invalidAnswer;
251 // Evaluate Di-mu invariant mass.
252 return EvalInvMass( pxP1, fMETx, fMETy, EAna::g_fMuonMass );
253}

◆ EvalTransverseMass() [4/4]

template<class T>
float EventAnalysis::EvalTransverseMass ( const T * pxP1,
float fMETx,
float fMETy,
float fMass1,
float fMass2 = invalidAnswer )
staticinherited

Definition at line 255 of file EventAnalysis.h.

257{
258 // Check integrity of inputs.No tachyons.
259 if ( fMass1 < 0.0f ) return invalidAnswer;
260 if ( !pxP1 ) return invalidAnswer;
261 // Set masses equal if required by user.
262 fMass2 = ( fMass2 < 0.0f ) ? fMass1 : fMass2;
263 // Evaluate invariant mass.
264 CLHEP::Hep3Vector xTmp1 = CLHEP::Hep3Vector( pxP1->p4().Px() * EAna::CGeV, pxP1->p4().Py() * EAna::CGeV, 0.0f );
265 CLHEP::Hep3Vector xTmp2 = CLHEP::Hep3Vector( fMETx, fMETy, 0.0f );
266 CLHEP::HepLorentzVector xLVec1; xLVec1.setVectM( xTmp1, fMass1 );
267 CLHEP::HepLorentzVector xLVec2; xLVec2.setVectM( xTmp2, 0.0f );
268 return static_cast<float>( xLVec1.invariantMass( xLVec2 ) );
269}

◆ EvaluateAngle()

template<class T>
float EventAnalysis::EvaluateAngle ( const T * pxP1,
const T * pxP2 )
staticinherited

Definition at line 164 of file EventAnalysis.h.

165{
166 // Check integrity of inputs.
167 if ( !pxP1 || !pxP2 ) return invalidAnswer;
168 // Evaluate the angle.
169 CLHEP::Hep3Vector xTmp1 = calculateMomentum(pxP1);
170 CLHEP::Hep3Vector xTmp2 = calculateMomentum(pxP2);
171 return static_cast<float>( xTmp1.angle(xTmp2) );
172}

◆ finalize()

void MuonSelector::finalize ( )
virtual

Definition at line 441 of file MuonSelector.cxx.

442{
443 // statistics report
444 std::cout << " * MuonSelector* -- STATS -- " << std::endl
445 << " tested : " << m_testedmuons << std::endl;
446 if (m_doQualSelection) std::cout << " passQual: " << m_passqual << std::endl;
447 if (m_doIsoSelection) std::cout << " passIso : " << m_passiso << std::endl;
448 if (m_doPtSelection) std::cout << " passpt : " << m_passpt << std::endl;
449 if (m_doIPSelection) std::cout << " passip : " << m_passip << std::endl;
450 if (m_doMCPSelection) std::cout << " passmcp : " << m_passmcp << std::endl;
451 std::cout << " passall : " << m_passall << std::endl
452 << std::endl;
453
454 return;
455}

◆ GetPtCut()

double MuonSelector::GetPtCut ( )
inline

Definition at line 55 of file MuonSelector.h.

55{return m_combPtCut;}

◆ Init()

void MuonSelector::Init ( )
virtual

Reimplemented from EventAnalysis.

Definition at line 112 of file MuonSelector.cxx.

113{
114
115 // check muon selection tool is available
116 if (m_muonSelectionTool.retrieve().isSuccess()) {
117 ( *m_msgStream) << MSG::INFO << " * MuonSelector::Init * m_muonSelectionTool.initialize() success :)" << endmsg;
118 if(m_doDebug){ std::cout << " * MuonSelector::Init * m_muonSelectionTool.initialize() success :)" << std::endl;}
119 }
120 else {
121 (*m_msgStream) << MSG::ERROR << " * MuonSelector::Init * FAILURE * Muon selction tool retrieving failed :( " << endmsg;
122 }
123
124 PARENT::Init();
125}
#define endmsg
virtual void Init()

◆ operator=()

MuonSelector & MuonSelector::operator= ( const MuonSelector & )
delete

◆ passIPCuts()

bool MuonSelector::passIPCuts ( )
private

Definition at line 345 of file MuonSelector.cxx.

346{
347 float extd0 = 0.0 ;
348 float extz0 = 0.0 ;
349 using enum xAOD::Muon::TrackParticleType;
350 //I'm not really sure of this logic.
351 if (const xAOD::TrackParticle* IDTrk = m_pxMuon->trackParticle(InnerDetectorTrackParticle); IDTrk != nullptr) {
352 extd0 = IDTrk->d0();
353 extz0 = IDTrk->z0()+IDTrk->vz();
354 if(m_doDebug){
355 std::cout << " * MuonSelector::passIPCuts *"
356 << " the IDTrack muon d0: " << extd0
357 << " the IDTrack muon z0: " << extz0 << " = " << IDTrk->z0() << " + " << IDTrk->vz() << std::endl;
358 }
359 } else {
360 if(m_doDebug) std::cout << " * MuonSelector * passIPCuts() * no valid inDetTrackParticleLink(). Will use the combined muon IPs" << std::endl;
361
362 const xAOD::TrackParticle* CBTrk = m_pxMuon->trackParticle(CombinedTrackParticle);
363 if (!CBTrk) {
364 if(m_doDebug) std::cout << " * MuonSelector * passIPCuts() * no valid CombinedTrackParticle. Giving up." << std::endl;
365 return false;
366 }
367 else {
368 extd0 = CBTrk->d0();
369 extz0 = CBTrk->z0()+CBTrk->vz();
370 if(m_doDebug){
371 std::cout << " * MuonSelector * passIPCuts() *"
372 << " the CBTrack muon d0: " << extd0
373 << " the CBTrack muon z0: " << extz0 << " = " << CBTrk->z0() << " + " << CBTrk->vz()<< std::endl;
374 }
375 }
376 }
377
378 // retrieve the vertices
379 const xAOD::VertexContainer * vxContainer(nullptr);
381 if (!vxContainer){
382 if(m_doDebug) std::cout << " * MuonSelector::passIPCuts ** fails because NO vertex collection "<< std::endl;
383 return false;
384 }
385
386 if ( vxContainer->size()>1 ) {
387 if(m_doDebug) {
388 std::cout << " * MuonSelector::passIPCuts ** vertex container is filled with " << vxContainer->size() << " vertices" << std::endl;
389
390 // loop on vertices to check their coordinates:
391 for (int ivtx=0; ivtx < (int) vxContainer->size(); ivtx++) {
392 const xAOD::Vertex* thisVtx = (*vxContainer)[ivtx];
393 std::cout << " vertex " << ivtx+1 << " (x,y,z) = (" << thisVtx->position().x()
394 << ", " << thisVtx->position().y()
395 << ", " << thisVtx->position().z()
396 << ") type= " << thisVtx->vertexType()
397 << " Npart= " << thisVtx->nTrackParticles()
398 << std::endl;
399 }
400 }
401
402 // new method
403 if (true) {
404 bool goodmuonIP = false; // by default think the IP is not good
405 float minDeltaZ = 99999.; // large number
406 // loop on vertices and check the muon may come from one of them
407 for (int ivtx=0; ivtx < (int) vxContainer->size(); ivtx++) {
408 const xAOD::Vertex* thisVtx = (*vxContainer)[ivtx];
409 // if ( (thisVtx->vertexType() == 1) && thisVtx->nTrackParticles()>2 ) {
410 if ( thisVtx->nTrackParticles()>2 ) {
411 if (std::abs(extz0 - thisVtx->position().z()) < minDeltaZ) minDeltaZ = std::abs(extz0 - thisVtx->position().z());
412
413 // check the vertex is in the accepted Z range and that the muon is not far from the vertex
414 if (m_doDebug) {
415 std::cout << " testing vtx: " << ivtx << " vtx.z= " << thisVtx->position().z() << " trk.z= " << extz0 << " deltaZ= " << std::abs(extz0 - thisVtx->position().z()) << " minDeltaZ= " << minDeltaZ << std::endl;
416 }
417 if (std::abs(thisVtx->position().z()) < m_pVZCut && std::abs(extz0 - thisVtx->position().z()) < m_diffZCut){
418 goodmuonIP = true;
419 if(m_doDebug) std::cout << " * MuonSelector::passIPCuts * this muon has passed the IPCuts for vertex " << ivtx+1
420 << " pVZcut= " << std::abs(extz0 - thisVtx->position().z()) << " < " << m_diffZCut << std::endl
421 << " vtx (x,y,z): "
422 << " (" << thisVtx->position().x()
423 << ", " << thisVtx->position().y()
424 << ", " << thisVtx->position().z()
425 << ") type: " << thisVtx->vertexType()
426 << " Npart: " << thisVtx->nTrackParticles() << std::endl;
427 }
428 }
429 }
430 if (goodmuonIP) {
431 if(m_doDebug) std::cout <<" * MuonSelector::passIPCuts * this muon has passed the IPCuts. Zcut: "<< m_pVZCut << " m_diffZCut " << m_diffZCut << std::endl;
432 return true;
433 }
434 } // end new method
435 }
436 if(m_doDebug) std::cout <<" * MuonSelector * passIPCuts() * this muon has not passed the IPCuts: " << std::endl;
437 return false;
438}
static const T * getContainer(CONTAINERS eContainer)
float z0() const
Returns the parameter.
float vz() const
The z origin for the parameters.
float d0() const
Returns the parameter.
size_t nTrackParticles() const
Get the number of tracks associated with this vertex.
VxType::VertexType vertexType() const
The type of the vertex.
const Amg::Vector3D & position() const
Returns the 3-pos.
TrackParticle_v1 TrackParticle
Reference the current persistent version:
VertexContainer_v1 VertexContainer
Definition of the current "Vertex container version".
Vertex_v1 Vertex
Define the latest version of the vertex class.

◆ passIsolCuts()

bool MuonSelector::passIsolCuts ( )
private

Definition at line 316 of file MuonSelector.cxx.

317{
318 float iso_pt40(0);
319 if( !m_pxMuon->isolation(iso_pt40, xAOD::Iso::ptcone40) ) {
320 if(m_doDebug) {
321 std::cout << " * MuonSelector::passIsolCuts * WARNING * No isolation variable stored on the muon" << std::endl;
322 std::cout << " * MuonSelector::passIsolCuts * this muon did not pass the IsoCuts " << std::endl;
323 }
324 return false;
325 }
326
327 else {
328 double pt = m_pxMuon->pt();
329 double ptSum = xAOD::Iso::ptcone40;
330 if(m_doDebug) std::cout <<" * MuonSelector::passIsolCuts * muon pt: " << pt <<" ptSum(ptcone40): "<< ptSum << std::endl;
331 if (ptSum/pt < m_IsoCut ){
332 if(m_doDebug) std::cout << " * MuonSelector::passIsolCuts * this muon passed the IsoCuts ptcone40 / pt= "
333 << ptSum << " / " << pt << " = " << ptSum / pt
334 << " < IsoCut(" << m_IsoCut << ") " << std::endl;
335 return true;
336 }
337 }
338
339 if(m_doDebug) std::cout << " * MuonSelector::passIsolCuts * this muon did not pass the IsoCuts:" << std::endl;
340 return false;
341}

◆ passPtCuts()

bool MuonSelector::passPtCuts ( )
private

Definition at line 270 of file MuonSelector.cxx.

271{
272
273 if(m_doDebug) std::cout << " * MuonSelector::passPtCuts * START *" << std::endl;
274 using enum xAOD::Muon::TrackParticleType;
275 const xAOD::TrackParticle* pxMuonID = m_pxMuon->trackParticle(InnerDetectorTrackParticle);
276 const xAOD::TrackParticle* pxMuonMS = m_pxMuon->trackParticle(MuonSpectrometerTrackParticle);
277 const xAOD::TrackParticle* pxMuonCB = m_pxMuon->trackParticle(CombinedTrackParticle);
278
279 double pt = 0, ptID, ptMS,ptCB;
280
281 if ( !(pxMuonID || pxMuonMS || pxMuonCB)){
282 if(m_doDebug) std::cout << " * MuonSelector::passPtCuts * NO inDetTrackParticle && muonSpectrometerTrackParticle && CombinedTrackParticle: " << std::endl;
283 }
284
285 else {
286
287 pt = m_pxMuon->pt();
288 ptID = pxMuonID ? pxMuonID->pt() : 0.0 ;
289 ptMS = pxMuonMS ? pxMuonMS->pt() : 0.0 ;
290 ptCB = pxMuonCB ? pxMuonCB->pt() : 0.0 ;
291 double fMEta = std::abs( m_pxMuon->eta() );
292
293 if(m_doDebug) std::cout << " * MuonSelector::passPtCuts * pt of each segments of this muon pxMuon: " << pt << std::endl
294 << " ptID: " << ptID << std::endl
295 << " ptMS: " << ptMS << std::endl
296 << " ptCB: " << ptCB << std::endl
297 << " fMEta pxMuon->eta(): " << fMEta << std::endl;
298
299
300 if ( (fMEta < m_fEtaCut)
301 && (pt > m_combPtCut)
302 && (ptMS > m_ptMSCut || !pxMuonMS)
303 && (ptID > m_ptMSCut || !pxMuonID)
304 ){
305 // warning one can check also the difference of pt: std::abs(ptMS - ptID) < m_diffPtCut
306 if(m_doDebug) std::cout << " * MuonSelector::passPtCuts * this muon is in eta range |eta|= " << fMEta << " < EtaCut(" << m_fEtaCut << ") " << std::endl
307 << " and passed the PtCuts (" << m_combPtCut <<") "<< std::endl;
308 return true;
309 }
310 }
311 if(m_doDebug) std::cout << " * MuonSelector::passPtCuts * this muon did not pass the PtCuts (reco pt=" << pt << ") or Eta cut " << m_fEtaCut << std::endl;
312 return false;
313}
virtual double pt() const override final
The transverse momentum ( ) of the particle.

◆ passQualCuts()

bool MuonSelector::passQualCuts ( )
private

Definition at line 215 of file MuonSelector.cxx.

216{
217 bool goodTrack = false;
218
219 // First get the muon track, then the summary
220 const xAOD::TrackParticle* IDTrk = m_pxMuon->trackParticle(xAOD::Muon::TrackParticleType::InnerDetectorTrackParticle); // use the Inner Detector segment
221
222 if (IDTrk) {
223 uint8_t dummy(-1);
224 bool eBLhits = IDTrk->summaryValue( dummy, xAOD::expectBLayerHit ) ? true : false;
225 int nBLhits = IDTrk->summaryValue( dummy, xAOD::numberOfBLayerHits ) ? dummy :-1;
226
227 int nhitsPIX = IDTrk->summaryValue( dummy, xAOD::numberOfPixelHits ) ? dummy :-1;
228 int nhitsSCT = IDTrk->summaryValue( dummy, xAOD::numberOfSCTHits ) ? dummy :-1;
229 int nhitsTRT = IDTrk->summaryValue( dummy, xAOD::numberOfTRTHits ) ? dummy :-1;
230
231 int nPIXDS = IDTrk->summaryValue( dummy, xAOD::numberOfPixelDeadSensors ) ? dummy :-1;
232 int nSCTDS = IDTrk->summaryValue( dummy, xAOD::numberOfSCTDeadSensors ) ? dummy :-1;
233
234 int nPIXH = IDTrk->summaryValue( dummy, xAOD::numberOfPixelHoles )? dummy :-1;
235 int nSCTH = IDTrk->summaryValue( dummy, xAOD::numberOfSCTHoles )? dummy :-1;
236 int nTRTH = IDTrk->summaryValue( dummy, xAOD::numberOfTRTHoles )? dummy :-1;
237
238 int nContribPixLayers = IDTrk->summaryValue( dummy, xAOD::numberOfContribPixelLayers )? dummy :-1;
239
240 if(m_doDebug) std::cout << " * MuonSelector * passQualCuts() * eBLhits: " << eBLhits
241 << " nBLhits: " << nBLhits
242 << " nhitsPIX: " << nhitsPIX
243 << " nPIXLayers: " << nContribPixLayers
244 << " nhitsSCT: " << nhitsSCT
245 << " Silicon holes: " << nPIXH + nSCTH
246 << " nhitsTRT: " << nhitsTRT
247 << " nTRTholes: " << nTRTH
248 << std::endl;
249
250 if (((!eBLhits) || (nBLhits > 0))
251 && (nhitsPIX + nPIXDS > 1 )
252 && (nhitsSCT + nSCTDS >=6 )
253 && (nPIXH + nSCTH < 2 ) ) {
254 goodTrack = true;
255 }
256 }
257
258 if (m_doDebug) {
259 if (goodTrack) {
260 std::cout << " * MuonSelector * passQualCuts() * this muon satisfies the hits number QualCuts " << std::endl;
261 }
262 else {
263 std::cout << " * MuonSelector * passQualCuts() * this muon did not pass the hits number QualCuts " << std::endl;
264 }
265 }
266 return goodTrack;
267}
bool summaryValue(uint8_t &value, const SummaryType &information) const
Accessor for TrackSummary values.
@ numberOfPixelHoles
number of pixel layers on track with absence of hits [unit8_t].
@ numberOfContribPixelLayers
number of contributing layers of the pixel detector [unit8_t].
@ numberOfTRTHits
number of TRT hits [unit8_t].
@ numberOfTRTHoles
number of TRT holes [unit8_t].
@ numberOfBLayerHits
these are the hits in the first pixel layer, i.e.
@ numberOfSCTDeadSensors
number of dead SCT sensors crossed [unit8_t].
@ expectBLayerHit
Do we expect a b-layer hit for this track?
@ numberOfSCTHits
number of hits in SCT [unit8_t].
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
@ numberOfPixelDeadSensors
number of dead pixel sensors crossed [unit8_t].
@ numberOfSCTHoles
number of SCT holes [unit8_t].

◆ passSelection()

bool MuonSelector::passSelection ( const xAOD::Muon * pxMuon)

Definition at line 136 of file MuonSelector.cxx.

137{
138 if(m_doDebug){ std::cout << " * MuonSelector::passSelection * START * new muon " << pxMuon << " with pt: " << pxMuon->pt() << std::endl; }
139
140 std::vector<bool> passes;
141 passes.reserve(8);
142 bool pass = true;
143 if ( pxMuon ) {
144 // Save local copy of muon address if it's ok.
145 m_pxMuon = pxMuon;
147
148 // Test muon pass conditions in turn
150 pass = passQualCuts();
151 passes.push_back(pass);
152 if (m_doDebug && !pass) std::cout <<" * MuonSelector::passSelection * Muon Fails QualSelection"<<std::endl;
153 if (pass) m_passqual++;
154 }
155
156 if (m_doIsoSelection){
157 pass = passIsolCuts();
158 passes.push_back(pass);
159 if (m_doDebug && !pass) std::cout<<" * MuonSelector::passSelection * Muon Fails Iso Selection"<<std::endl;
160 if (pass) m_passiso++;
161 }
162
163
164 if (m_doPtSelection){
165 pass = passPtCuts();
166 passes.push_back(pass);
167 if (m_doDebug && !pass) std::cout<<" * MuonSelector::passSelection * Muon Fails pT Selection"<<std::endl;
168 if (pass) m_passpt++;
169 }
170
171 if (m_doIPSelection){
172 pass = passIPCuts();
173 passes.push_back(pass);
174 if (m_doDebug && !pass) std::cout<<" * MuonSelector::passSelection * Muon Fails IP Selection"<<std::endl;
175 if (pass) m_passip++;
176 }
177
178 if (m_doMCPSelection) {
179 xAOD::Muon::Quality my_quality=m_muonSelectionTool->getQuality(*pxMuon);
180 if (m_doDebug) std::cout << " * MuonSelector::passSelection * muon quality from muonsSelectionTool: " << my_quality << std::endl;
181
182 pass = (my_quality <= m_requestedMuonQuality);
183 passes.push_back(pass);
184 if (m_doDebug && pass) std::cout<<" * MuonSelector::passSelection * Muon Passes official m_muonSelectionTool (medium) Selection :)" << std::endl;
185 if (m_doDebug && !pass) std::cout<<" * MuonSelector::passSelection * Muon Fails official m_muonSelectionTool (medium) Selection" << std::endl;
186 if (pass) m_passmcp++;
187 }
188
189 // check if the muon failed some of the cuts
190 for (int i=0; i < int(passes.size()); i++)
191 if (!passes[i]){
192 if(m_doDebug) std::cout << " * MuonSelector::passSelection * BAD MUON * muon haven't passed the " << i+1 << "th selection " << std::endl;
193 return false;
194 }
195 } // if pxMuon exists
196
197 // reached this point, the muon passed all selection criteria. This muon is good
198 m_passall++;
199 if(m_doDebug){ std::cout << " * MuonSelector::passSelection * completed. GOOD MUON " << std::endl; }
200 return true;
201}
virtual double pt() const
The transverse momentum ( ) of the particle.

◆ Reco()

bool MuonSelector::Reco ( )
virtual

Definition at line 129 of file MuonSelector.cxx.

130{
131 return true;
132}

◆ Register()

void EventAnalysis::Register ( )
privateinherited

Definition at line 63 of file EventAnalysis.cxx.

64{
65 ServiceHandle<ITHistSvc> histSvc ("THistSvc", "EventAnalysis");
66
67 // Register histograms in monitoring tool
68 registerHistogramType(*histSvc, m_x1DHistograms, m_xSampleName, "/1dhisto_");
69 registerHistogramType(*histSvc, m_x2DHistograms, m_xSampleName, "/2dhisto_");
70
71 registerHistogramType(*histSvc, m_x1DProfHistograms, m_xSampleName, "/1dprof_");
72 registerHistogramType(*histSvc, m_x2DProfHistograms, m_xSampleName, "/2dprof_");
73}
std::map< unsigned int, TProfile2D * > m_x2DProfHistograms
std::map< unsigned int, TH2F * > m_x2DHistograms
std::map< unsigned int, TH1F * > m_x1DHistograms
std::map< unsigned int, TProfile * > m_x1DProfHistograms

◆ SetCustomMuonSelectionTool()

void MuonSelector::SetCustomMuonSelectionTool ( ToolHandle< CP::IMuonSelectionTool > mst)
inline

Definition at line 58 of file MuonSelector.h.

58{ m_muonSelectionTool = mst; };

◆ setDebug()

void MuonSelector::setDebug ( bool debug)
inline

Definition at line 44 of file MuonSelector.h.

const bool debug

◆ SetMuonQualityRequirement()

void MuonSelector::SetMuonQualityRequirement ( std::string newname)

Definition at line 458 of file MuonSelector.cxx.

459{
460 using enum xAOD::Muon::Quality;
461 std::for_each (newname.begin(), newname.end(), [](char & c) {c = std::toupper(c);} );
462
463 if (newname.find("TIGHT") != std::string::npos) m_requestedMuonQuality = Tight;
464 if (newname.find("MEDIUM") != std::string::npos) m_requestedMuonQuality = Medium;
465 if (newname.find("LOOSE") != std::string::npos) m_requestedMuonQuality = Loose;
466 if (newname.find("VERYLOOSE")!= std::string::npos) m_requestedMuonQuality = VeryLoose;
467
468 std::cout << " ** MuonSelector::SetMuonQualityRequirement(" << newname <<") = " << m_requestedMuonQuality << std::endl;
469
470 return;
471}

◆ SetPtCut()

void MuonSelector::SetPtCut ( double newvalue)
inline

Definition at line 54 of file MuonSelector.h.

54{m_combPtCut = newvalue;}

Member Data Documentation

◆ invalidAnswer

float EventAnalysis::invalidAnswer {-999.9f}
staticconstexprinherited

Definition at line 40 of file EventAnalysis.h.

40{-999.9f};

◆ m_bCutOnCombKine

bool MuonSelector::m_bCutOnCombKine
private

Definition at line 91 of file MuonSelector.h.

◆ m_bLock

bool MuonSelector::m_bLock
private

Definition at line 116 of file MuonSelector.h.

◆ m_combPtCut

double MuonSelector::m_combPtCut
private

Definition at line 94 of file MuonSelector.h.

◆ m_coneSize

double MuonSelector::m_coneSize {}
private

Definition at line 84 of file MuonSelector.h.

84{};

◆ m_diffPtCut

float MuonSelector::m_diffPtCut
private

Definition at line 97 of file MuonSelector.h.

◆ m_diffZCut

float MuonSelector::m_diffZCut
private

Definition at line 96 of file MuonSelector.h.

◆ m_doDebug

bool MuonSelector::m_doDebug
private

Definition at line 108 of file MuonSelector.h.

◆ m_doIPSelection

bool MuonSelector::m_doIPSelection
private

Definition at line 112 of file MuonSelector.h.

◆ m_doIsoSelection

bool MuonSelector::m_doIsoSelection
private

Definition at line 110 of file MuonSelector.h.

◆ m_doMCPSelection

bool MuonSelector::m_doMCPSelection
private

Definition at line 113 of file MuonSelector.h.

◆ m_doPtSelection

bool MuonSelector::m_doPtSelection
private

Definition at line 111 of file MuonSelector.h.

◆ m_doQualSelection

bool MuonSelector::m_doQualSelection
private

Definition at line 109 of file MuonSelector.h.

◆ m_fEtaCut

float MuonSelector::m_fEtaCut
private

Definition at line 92 of file MuonSelector.h.

◆ m_fIDChiPerDofCut

float MuonSelector::m_fIDChiPerDofCut
private

Definition at line 102 of file MuonSelector.h.

◆ m_fIDPtCut

float MuonSelector::m_fIDPtCut
private

Definition at line 101 of file MuonSelector.h.

◆ m_IDSiHitsCut

int MuonSelector::m_IDSiHitsCut
private

Definition at line 103 of file MuonSelector.h.

◆ m_IsoCut

double MuonSelector::m_IsoCut
private

Definition at line 89 of file MuonSelector.h.

◆ m_msgStream

MsgStream* MuonSelector::m_msgStream
private

Definition at line 75 of file MuonSelector.h.

◆ m_muonSelectionTool

ToolHandle<CP::IMuonSelectionTool> MuonSelector::m_muonSelectionTool

Definition at line 45 of file MuonSelector.h.

◆ m_passall

unsigned int MuonSelector::m_passall {}
private

Definition at line 125 of file MuonSelector.h.

125{};

◆ m_passip

unsigned int MuonSelector::m_passip {}
private

Definition at line 123 of file MuonSelector.h.

123{};

◆ m_passiso

unsigned int MuonSelector::m_passiso {}
private

Definition at line 121 of file MuonSelector.h.

121{};

◆ m_passmcp

unsigned int MuonSelector::m_passmcp {}
private

Definition at line 124 of file MuonSelector.h.

124{};

◆ m_passpt

unsigned int MuonSelector::m_passpt {}
private

Definition at line 122 of file MuonSelector.h.

122{};

◆ m_passqual

unsigned int MuonSelector::m_passqual {}
private

Definition at line 120 of file MuonSelector.h.

120{};

◆ m_ptMSCut

float MuonSelector::m_ptMSCut
private

Definition at line 95 of file MuonSelector.h.

◆ m_pVZCut

float MuonSelector::m_pVZCut
private

Definition at line 98 of file MuonSelector.h.

◆ m_pxMuon

const xAOD::Muon* MuonSelector::m_pxMuon {nullptr}
private

Definition at line 78 of file MuonSelector.h.

78{nullptr};

◆ m_requestedMuonQuality

xAOD::Muon::Quality MuonSelector::m_requestedMuonQuality {xAOD::Muon::Quality::VeryLoose}
private

Definition at line 81 of file MuonSelector.h.

81{xAOD::Muon::Quality::VeryLoose};

◆ m_testedmuons

unsigned int MuonSelector::m_testedmuons {}
private

Definition at line 119 of file MuonSelector.h.

119{};

◆ m_ucID_PIXCut

unsigned char MuonSelector::m_ucID_PIXCut
private

Definition at line 104 of file MuonSelector.h.

◆ m_ucID_SCTCut

unsigned char MuonSelector::m_ucID_SCTCut
private

Definition at line 105 of file MuonSelector.h.

◆ m_ucID_TRTCut

unsigned char MuonSelector::m_ucID_TRTCut
private

Definition at line 106 of file MuonSelector.h.

◆ m_ucJMuon_Cut

unsigned char MuonSelector::m_ucJMuon_Cut
private

Definition at line 88 of file MuonSelector.h.

◆ m_uNumInstances

unsigned int MuonSelector::m_uNumInstances = 0U
private

Definition at line 67 of file MuonSelector.h.

◆ m_uPassedEvents

unsigned int EventAnalysis::m_uPassedEvents
protectedinherited

Definition at line 75 of file EventAnalysis.h.

◆ m_x1DHistograms

std::map<unsigned int, TH1F*> EventAnalysis::m_x1DHistograms
protectedinherited

Definition at line 76 of file EventAnalysis.h.

◆ m_x1DProfHistograms

std::map<unsigned int, TProfile*> EventAnalysis::m_x1DProfHistograms
protectedinherited

Definition at line 78 of file EventAnalysis.h.

◆ m_x2DHistograms

std::map<unsigned int, TH2F*> EventAnalysis::m_x2DHistograms
protectedinherited

Definition at line 77 of file EventAnalysis.h.

◆ m_x2DProfHistograms

std::map<unsigned int, TProfile2D*> EventAnalysis::m_x2DProfHistograms
protectedinherited

Definition at line 79 of file EventAnalysis.h.

◆ m_xSampleName

std::string EventAnalysis::m_xSampleName
protectedinherited

Definition at line 81 of file EventAnalysis.h.


The documentation for this class was generated from the following files: