|
ATLAS Offline Software
|
Go to the documentation of this file.
22 #include "CLHEP/Random/RandFlat.h"
28 #include "CLHEP/Units/SystemOfUnits.h"
29 #include "CLHEP/Units/PhysicalConstants.h"
113 if (
m_doDebug) { std::cout <<
" * ZmumuEvent * ZmumuEvent::Reco() starting " << std::endl; }
133 for(
auto muon : *pxMuonContainer ){
136 idtrk =
muon->trackParticle(xAOD::Muon::InnerDetectorTrackParticle);
137 metrk =
muon->trackParticle(xAOD::Muon::ExtrapolatedMuonSpectrometerTrackParticle);
138 if (idtrk && metrk) {
141 InnerDetectorPtAcc(*
muon) = idtrk->
pt();
142 MuonSpectrometerPtAcc(*
muon) = metrk->
pt();
148 if (pxMuonContainer !=
nullptr) {
149 if (
m_doDebug) {std::cout <<
" * ZmumuEvent * track list has "<< pxMuonContainer->
size() <<
" muon in xAOD::MuonContainer " <<
m_container <<std::endl; }
153 int attemptedMuonCount = 0;
154 int acceptedMuonCount = 0;
156 while ( xMuonItr != xMuonItrE ){
158 attemptedMuonCount++;
160 if(
m_doDebug){std::cout <<
" * ZmumuEvent * Reco() ** attempt on xMuonItr number "<< attemptedMuonCount <<
" (pointer: "<< *xMuonItr <<
")" << std::endl; }
166 if (
m_doDebug) {std::cout <<
" This muon is accepeted !! this is muon number " << acceptedMuonCount <<
" & full pass" <<
m_numberOfFullPassMuons << std::endl; }
171 if (
m_doDebug) {std::cout <<
" * ZmumuEvent * accepted " << acceptedMuonCount <<
" muons from the input list of "<< pxMuonContainer->
size() <<std::endl; }
177 std::cout <<
" * ZmumuEvent * Can't retrieve combined muon collection (container: " <<
m_container <<
") " << std::endl;
220 if(
m_doDebug) {std::cout <<
" * ZmumuEvent * Event selection ** START ** for type: " << eType <<
" m_NumberOfFullPassMuons: " <<
m_numberOfFullPassMuons << std::endl;}
230 bool allMuonsGood =
true;
233 allMuonsGood =
false;
248 double leadingMuonPt, secondMuonPt;
282 if (secondMuonPt > leadingMuonPt) {
283 double tempPt = leadingMuonPt;
284 leadingMuonPt = secondMuonPt;
285 secondMuonPt = tempPt;
339 std::cout <<
" * ZmumuEvent * z0_muon1= " << z0_muon1 <<
" z0_muon2= " << z0_muon2 <<
" delta= " << z0_muon1-z0_muon2 << std::endl;
341 if ( std::abs(z0_muon1 - z0_muon2) >
m_Z0GapCut) {
345 std::cout <<
" * ZmumuEvent * z0_muon1= " << z0_muon1 <<
" z0_muon2= " << z0_muon2 <<
" delta= " << z0_muon1-z0_muon2 <<
" > " <<
m_Z0GapCut <<
" (cut)" << std::endl;
353 std::cout <<
" * ZmumuEvent * Good muon pair: pt= " << leadingMuonPt/1000
354 <<
" & " << secondMuonPt/1000
355 <<
" GeV dimuon invariant mass = " <<
m_fInvariantMass[eType] <<
" GeV " << std::endl;
392 if(
m_doDebug) { std::cout <<
" * ZmumuEvent * RecordMuon * bad pxMuon --> EXIT "<< std::endl;}
402 if(
m_doDebug){ std::cout <<
" * ZmumuEvent * RecordMuon * bad pxMSmuon --> EXIT "<< std::endl;}
568 if ( pxTrackContainer )
572 while ( xTrkItr != xTrkItrE )
575 if ( !pxTrack )
continue;
577 if(!pxTrkTrack)
continue;
579 if ( !pxPerigee )
continue;
580 const float fTrkPhi = pxPerigee->parameters()[
Trk::phi];
581 const float fTrkEta = pxPerigee->eta();
585 float fDR = sqrt( fDPhi*fDPhi + fDEta*fDEta );
637 double muPlusPt = 0.;
638 double muMinusPt = 0.;
657 if (muPlusId>=0 && muMinusId>=0) {
663 <<
" mu+: " << muPlusId <<
" mu-: " << muMinusId << std::endl;}
673 std::cout <<
" ** ZmumuEvent ** -- STATS -- " << std::endl
float m_fZPhiDir[NUM_TYPES]
static float EvaluateAngle(const T *pxP1, const T *pxP2)
virtual double pt() const override final
The transverse momentum ( ) of the particle.
Const iterator class for DataVector/DataList.
const xAOD::TrackParticle * m_pxIDTrack[NUM_MUONS]
Scalar phi() const
phi method
unsigned int m_numberOfFullPassMuons
double m_LeadingMuonPtCut
std::vector< Identifier > ID
const TrackParticle * trackParticle(TrackParticleType type) const
Returns a pointer (which can be NULL) to the TrackParticle used in identification of this muon.
const std::string getRegion() const
unsigned int m_uTrackMatch
float getPtImbalance(ZTYPE eType)
float charge() const
Returns the charge.
static float EvalDiMuInvMass(const T *pxP1, const T *pxP2)
float m_fZEtaDir[NUM_TYPES]
Scalar eta() const
pseudorapidity method
unsigned int m_eventselectioncount_ptofleadingmuon
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
unsigned int m_acceptedMuonCount
float vz() const
The z origin for the parameters.
unsigned int m_eventselectioncount_masswindow
const xAOD::Muon * m_pxRecMuon[NUM_MUONS]
float z0() const
Returns the parameter.
setEt setPhi setE277 setWeta2 eta1
unsigned int m_eventselectioncount_goodlumiblock
bool EventSelection(ZTYPE eType)
static float EvalCharge(const T *pxP1, const T *pxP2)
unsigned int getNegMuon(ZTYPE eType)
@ u
Enums for curvilinear frames.
void SetMuonPtCut(double newvalue)
unsigned int m_testedMuonCount
float m_fMuonDispersion[NUM_TYPES]
PerfMonServices::CONTAINERS m_container
bool m_passedSelectionCuts
virtual void BookHistograms()
static float EvalPtDiff(const T *pxP1, const T *pxP2)
unsigned int m_eventselectioncount_morethantwomuons
float m_fInvariantMass[NUM_TYPES]
const xAOD::TrackParticle * m_pxMETrack[NUM_MUONS]
virtual double pt() const
The transverse momentum ( ) of the particle.
double m_DiMuonPairInvMass
unsigned int m_acceptedEventCount
bool RecordMuon(const xAOD::Muon *pxMuon)
unsigned int m_eventsWithEnoughMuonsCount
const Perigee * perigeeParameters() const
return Perigee.
unsigned int m_eventselectioncount_openingangle
double charge(const T &p)
static float EvalEta(const T *pxP1, const T *pxP2)
unsigned int m_eventselectioncount_toofewmuons
bool passSelection(const xAOD::Muon *pxMuon)
static float EvalPt(const T *pxP1, const T *pxP2)
unsigned int m_eventsWithoutEnoughMuonsCount
void SetSecondMuonPtCut(double newvalue)
void ReconstructKinematics()
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
void SetLeadingMuonPtCut(double newvalue)
unsigned int m_eventselectioncount_ptofsecondmuon
const xAOD::TrackParticle * m_pxMSTrack[NUM_MUONS]
unsigned int m_eventselectioncount_dimuoncharge
static float EvalPhi(const T *pxP1, const T *pxP2)
int getZCharge(ZTYPE eType)
Class describing a TrackParticle.
const Trk::Track * track() const
Returns a pointer (which can be NULL) to the Trk::Track which was used to make this TrackParticle.
std::string m_xSampleName
size_type size() const noexcept
Returns the number of elements in the collection.
Helper class to provide type-safe access to aux data.
unsigned int getPosMuon(ZTYPE eType)
unsigned int getNumberOfTaggedMuons()
unsigned int m_eventselectioncount_notallmuonsfilled
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
virtual bool Reco(int theLumiBlock=0)