|  | 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)