ATLAS Offline Software
TestBeam
TBRec
src
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
5
#include "
TBPartIDCherenkovMuTag.h
"
6
#include "
TBEvent/TBIdentifiedParticle.h
"
7
#include "
TBEvent/TBScintillatorCont.h
"
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;
23
m_useCherenkovBelow
= 0;
24
}
25
26
TBPartIDCherenkovMuTag::~TBPartIDCherenkovMuTag
()
27
{}
28
29
StatusCode
TBPartIDCherenkovMuTag::initialize
() {
30
return
StatusCode::SUCCESS;
31
}
32
33
StatusCode
TBPartIDCherenkovMuTag::execute
() {
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
) {
46
myParticle->
setParticle
(
TBIdentifiedParticle::MUON
);
47
ATH_MSG_DEBUG
(
" MuonTag="
<< scint->getSignal() );
48
break
;
49
}
50
}
51
if
(scint->getDetectorName()==
m_CherenkovName
) {
52
if
(scint->getSignal()>
m_cherenkovADCcut
)
53
myParticle->
setParticle
(
TBIdentifiedParticle::ELECTRON
);
54
else
55
myParticle->
setParticle
(
TBIdentifiedParticle::PION
);
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
84
StatusCode
TBPartIDCherenkovMuTag::finalize
() {
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
Generated on Thu Jul 4 2024 21:28:04 for ATLAS Offline Software by
1.8.18