ATLAS Offline Software
TBPartIDCherenkovMuTag.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
8 
9 TBPartIDCherenkovMuTag::TBPartIDCherenkovMuTag(const std::string& name, ISvcLocator* pSvcLocator) :
10  AthAlgorithm(name,pSvcLocator) {
11  declareProperty("SGScintkey",m_SGkeyscint = "ScintillatorCont");
12  declareProperty("MuonTagName",m_muonTagName="muTag");
13  declareProperty("CherenkovName",m_CherenkovName="C1");
14  declareProperty("IdentifiedParticleKey",m_particleKey="TBIdentifiedParticle");
15  declareProperty("CherenkovADCcut",m_cherenkovADCcut=410);
16  declareProperty("MuonADCcut",m_muonADCcut=500);
17  declareProperty("PrintSummary",m_printSummary=false);
18 
19  m_NElectrons=0;
20  m_NPions=0;
21  m_NMuons=0;
22  m_Nunknown=0;
24 }
25 
27 {}
28 
30  return StatusCode::SUCCESS;
31 }
32 
34  const TBScintillatorCont *scintCont;
35  StatusCode sc = evtStore()->retrieve(scintCont, m_SGkeyscint);
36  if (sc.isFailure()){
37  ATH_MSG_WARNING ( "Retrieval of TBScintillatorContainer with key "<<m_SGkeyscint<<" failed" );
38  return StatusCode::SUCCESS;
39  }
40  TBIdentifiedParticle* myParticle = new TBIdentifiedParticle();
41  //The following loop is broken as soon as the muon tag is found above the threshold
42  //Hence this can overwrite a preceeding electron/pion judgement by the chrenkov.
43  for (const TBScintillator* scint : *scintCont) {
44  if(scint->getDetectorName()==m_muonTagName) {
45  if (scint->getSignal()>m_muonADCcut) {
47  ATH_MSG_DEBUG (" MuonTag=" << scint->getSignal() );
48  break;
49  }
50  }
51  if (scint->getDetectorName()==m_CherenkovName) {
52  if(scint->getSignal()>m_cherenkovADCcut)
54  else
56  ATH_MSG_DEBUG (" Cherenkov=" << scint->getSignal() );
57  }
58  }
59 
60  if (myParticle->getParticle()==TBIdentifiedParticle::ELECTRON) {
61  ATH_MSG_DEBUG ( " Particle found to be an electron." );
62  m_NElectrons++;
63  }
64  else if (myParticle->getParticle()==TBIdentifiedParticle::PION) {
65  ATH_MSG_DEBUG ( " Particle found to be a pion." );
66  m_NPions++;
67  }
68  else if (myParticle->getParticle()==TBIdentifiedParticle::MUON) {
69  ATH_MSG_DEBUG ( " Particle found to be a muon." );
70  m_NMuons++;
71  }
72  else {
73  ATH_MSG_DEBUG ( " Particle cannot be identified." );
74  m_Nunknown++;
75  }
76  sc = evtStore()->record(myParticle,m_particleKey);
77  if (sc.isFailure()){
78  ATH_MSG_WARNING ( "Cannot record TBIdentifiedParticle with key " << m_particleKey );
79  }
80  return StatusCode::SUCCESS;
81 }
82 
83 
85  if (m_printSummary) {
86  const unsigned Ntotal=m_NElectrons+m_NPions+m_NMuons+m_Nunknown;
87  ATH_MSG_INFO ( "Particles found in the run:" );
88  ATH_MSG_INFO ( "Electrons: " << m_NElectrons );
89  ATH_MSG_INFO ( "Pions : " << m_NPions );
90  ATH_MSG_INFO ( "Muons : " << m_NMuons );
91  ATH_MSG_INFO ( "unkown : " << m_Nunknown );
92  ATH_MSG_INFO ( "Total : " << Ntotal );
93  }
94  return StatusCode::SUCCESS;
95 }
TBIdentifiedParticle::MUON
@ MUON
Definition: TBIdentifiedParticle.h:19
TBIdentifiedParticle::setParticle
void setParticle(const ParticleName name)
Definition: TBIdentifiedParticle.h:25
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
TBScintillatorCont.h
TBPartIDCherenkovMuTag::m_NPions
unsigned m_NPions
Definition: TBPartIDCherenkovMuTag.h:27
AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
TBIdentifiedParticle::PION
@ PION
Definition: TBIdentifiedParticle.h:18
TBPartIDCherenkovMuTag::~TBPartIDCherenkovMuTag
virtual ~TBPartIDCherenkovMuTag()
Definition: TBPartIDCherenkovMuTag.cxx:26
TBScintillatorCont
Definition: TBScintillatorCont.h:19
TBPartIDCherenkovMuTag::TBPartIDCherenkovMuTag
TBPartIDCherenkovMuTag(const std::string &name, ISvcLocator *pSvcLocator)
Definition: TBPartIDCherenkovMuTag.cxx:9
TBIdentifiedParticle.h
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
TBPartIDCherenkovMuTag::execute
virtual StatusCode execute() override
Definition: TBPartIDCherenkovMuTag.cxx:33
TBPartIDCherenkovMuTag.h
AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
TBPartIDCherenkovMuTag::finalize
virtual StatusCode finalize() override
Definition: TBPartIDCherenkovMuTag.cxx:84
TBPartIDCherenkovMuTag::m_muonADCcut
int m_muonADCcut
Definition: TBPartIDCherenkovMuTag.h:23
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
TBPartIDCherenkovMuTag::initialize
virtual StatusCode initialize() override
Definition: TBPartIDCherenkovMuTag.cxx:29
TBPartIDCherenkovMuTag::m_SGkeyscint
std::string m_SGkeyscint
Definition: TBPartIDCherenkovMuTag.h:22
AthAlgorithm
Definition: AthAlgorithm.h:47
TBPartIDCherenkovMuTag::m_cherenkovADCcut
int m_cherenkovADCcut
Definition: TBPartIDCherenkovMuTag.h:23
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
TBPartIDCherenkovMuTag::m_muonTagName
std::string m_muonTagName
Definition: TBPartIDCherenkovMuTag.h:22
TBPartIDCherenkovMuTag::m_Nunknown
unsigned m_Nunknown
Definition: TBPartIDCherenkovMuTag.h:27
TBIdentifiedParticle::getParticle
ParticleName getParticle() const
Definition: TBIdentifiedParticle.h:26
TBIdentifiedParticle::ELECTRON
@ ELECTRON
Definition: TBIdentifiedParticle.h:17
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
TBPartIDCherenkovMuTag::m_printSummary
bool m_printSummary
Definition: TBPartIDCherenkovMuTag.h:26
TBScintillator
Definition: TBScintillator.h:25
TBPartIDCherenkovMuTag::m_particleKey
std::string m_particleKey
Definition: TBPartIDCherenkovMuTag.h:22
TBIdentifiedParticle
Definition: TBIdentifiedParticle.h:13
TBPartIDCherenkovMuTag::m_NElectrons
unsigned m_NElectrons
Definition: TBPartIDCherenkovMuTag.h:27
TBPartIDCherenkovMuTag::m_NMuons
unsigned m_NMuons
Definition: TBPartIDCherenkovMuTag.h:27
TBPartIDCherenkovMuTag::m_useCherenkovBelow
double m_useCherenkovBelow
Definition: TBPartIDCherenkovMuTag.h:24
TBPartIDCherenkovMuTag::m_CherenkovName
std::string m_CherenkovName
Definition: TBPartIDCherenkovMuTag.h:22