ATLAS Offline Software
MMTriggerTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "GaudiKernel/ConcurrencyFlags.h"
6 
8 
9 namespace NSWL1 {
10 
11  MMTriggerTool::MMTriggerTool( const std::string& type, const std::string& name, const IInterface* parent) :
13  m_detManager(nullptr),
14  m_MmIdHelper(nullptr),
15  m_tree(nullptr)
16  {
17  declareInterface<NSWL1::IMMTriggerTool>(this);
18  }
19 
21 
22  ATH_MSG_DEBUG( "initializing -- " << name() );
23 
24  ATH_MSG_DEBUG( name() << " configuration:");
25  ATH_MSG_DEBUG(" " << std::setw(32) << std::setfill('.') << std::setiosflags(std::ios::left) << m_mmDigitContainer.name() << m_mmDigitContainer.value());
26  ATH_MSG_DEBUG(" " << std::setw(32) << std::setfill('.') << std::setiosflags(std::ios::left) << m_doNtuple.name() << ((m_doNtuple)? "[True]":"[False]")
27  << std::setfill(' ') << std::setiosflags(std::ios::right) );
28 
32 
33  const IInterface* parent = this->parent();
34  const INamedInterface* pnamed = dynamic_cast<const INamedInterface*>(parent);
35  const std::string& algo_name = pnamed->name();
36  if ( m_doNtuple ) {
37  if (Gaudi::Concurrency::ConcurrencyFlags::numConcurrentEvents() > 1) {
38  ATH_MSG_ERROR("DoNtuple is not possible in multi-threaded mode");
39  return StatusCode::FAILURE;
40  }
41 
42  ATH_CHECK( m_incidentSvc.retrieve() );
43  m_incidentSvc->addListener(this,IncidentType::BeginEvent);
44 
45  if ( algo_name=="NSWL1Simulation" ) {
46  ITHistSvc* tHistSvc;
47  ATH_CHECK( service("THistSvc", tHistSvc) );
48 
49  m_tree = nullptr;
50  std::string ntuple_name = algo_name+"Tree";
51  ATH_CHECK( tHistSvc->getTree(ntuple_name,m_tree) );
52  ATH_MSG_DEBUG("Analysis ntuple succesfully retrieved");
53  ATH_CHECK( this->book_branches() );
54  }
55  }
56 
57  // retrieve the MuonDetectormanager
59 
60  // retrieve the Mm offline Id helper
62 
63  m_par_large = std::make_shared<MMT_Parameters>("xxuvuvxx",'L', m_detManager);
64  m_par_small = std::make_shared<MMT_Parameters>("xxuvuvxx",'S', m_detManager);
65 
66  return StatusCode::SUCCESS;
67  }
68 
69  StatusCode MMTriggerTool::runTrigger(const EventContext& ctx, Muon::NSW_TrigRawDataContainer* rdo, const bool do_MMDiamonds) const {
70 
71  int event = ctx.eventID().event_number();
72  ATH_MSG_DEBUG("********************************************************* EVENT NUMBER = " << event);
73 
75  // //
76  // Load Variables From Containers into our Data Structures //
77  // //
79 
80  std::map<std::string, std::shared_ptr<MMT_Parameters> > pars;
81  pars["MML"] = m_par_large;
82  pars["MMS"] = m_par_small;
84 
85  std::map<std::pair<int, unsigned int>,std::vector<digitWrapper> > entries;
86  std::map<std::pair<int, unsigned int>,std::vector<hitData_entry> > Hits_Data_Set_Time;
87  std::map<std::pair<int, unsigned int>,evInf_entry> Event_Info;
88 
89  const McEventCollection* ptrMcEventCollection = nullptr;
90  const TrackRecordCollection* ptrMuonEntryLayer = nullptr;
91  if(m_isMC){
92  SG::ReadHandle<McEventCollection> readMcEventCollection( m_keyMcEventCollection, ctx );
93  if( !readMcEventCollection.isValid() ){
94  ATH_MSG_ERROR("Cannot retrieve McEventCollection");
95  return StatusCode::FAILURE;
96  }
97  if(m_doTruth) ptrMcEventCollection = readMcEventCollection.cptr();
99  if( !readMuonEntryLayer.isValid() ){
100  ATH_MSG_ERROR("Cannot retrieve MuonEntryLayer");
101  return StatusCode::FAILURE;
102  }
103  if(m_doTruth) ptrMuonEntryLayer = readMuonEntryLayer.cptr();
104  }
105 
106  SG::ReadHandle<MmDigitContainer> readMmDigitContainer( m_keyMmDigitContainer, ctx );
107  if( !readMmDigitContainer.isValid() ){
108  ATH_MSG_ERROR("Cannot retrieve MmDigitContainer");
109  return StatusCode::FAILURE;
110  }
111  histogramDigitVariables histDigVars;
112  ATH_CHECK( load.getMMDigitsInfo(ctx, ptrMcEventCollection, ptrMuonEntryLayer, readMmDigitContainer.cptr(), entries, Hits_Data_Set_Time, Event_Info, histDigVars) );
113  if (m_doNtuple) this->fillNtuple(histDigVars);
114 
115  if (entries.empty()) {
116  ATH_MSG_WARNING("No digits available for processing, exiting");
117  Hits_Data_Set_Time.clear();
118  Event_Info.clear();
119  return StatusCode::SUCCESS;
120  }
121 
122  std::unique_ptr<MMT_Diamond> diamond = std::make_unique<MMT_Diamond>(m_detManager);
123  if (do_MMDiamonds) {
126  diamond->setUV(m_uv);
128  diamond->setRoadSize(m_diamRoadSize);
133  }
134 
135  // We need to extract truth info, if available
136  for (const auto &it : Event_Info) {
137  double trueta = -999., truphi = -999., trutheta = -999., trupt = -999., dt = -999., tpos = -999., ppos = -999., epos = -999., tent = -999., pent = -999., eent = -999.;
138  trutheta = it.second.theta_ip; // truth muon at the IP
139  truphi = it.second.phi_ip;
140  trueta = it.second.eta_ip;
141  trupt = it.second.pt;
142  tpos = it.second.theta_pos; // muEntry position
143  ppos = it.second.phi_pos;
144  epos = it.second.eta_pos;
145  tent = it.second.theta_ent; // muEntry momentum
146  pent = it.second.phi_ent;
147  eent = it.second.eta_ent;
148  dt = it.second.dtheta;
149  if (m_doNtuple) {
150  m_trigger_trueEtaRange->push_back(trueta);
151  m_trigger_truePtRange->push_back(trupt);
152  m_trigger_trueThe->push_back(trutheta);
153  m_trigger_truePhi->push_back(truphi);
154  m_trigger_trueDth->push_back(dt); // theta_pos-theta_ent
155  m_trigger_trueEtaPos->push_back(epos);
156  m_trigger_trueThePos->push_back(tpos);
157  m_trigger_truePhiPos->push_back(ppos);
158  m_trigger_trueEtaEnt->push_back(eent);
159  m_trigger_trueTheEnt->push_back(tent);
160  m_trigger_truePhiEnt->push_back(pent);
161  }
162  }
163 
164  unsigned int particles = entries.rbegin()->first.second +1, nskip=0;
165  for (unsigned int i=0; i<particles; i++) {
166  std::pair<int, unsigned int> pair_event (event,i);
167 
168  // Now let's switch to reco hits: firstly, extracting the station name we're working on...
169  std::string station = "-";
170  auto event_it = entries.find(pair_event);
171  station = event_it->second[0].stName; // Station name is taken from the first digit! In MMLoadVariables there's a check to ensure all digits belong to the same station
172 
173  // Secondly, extracting the Phi of the station we're working on...
174  int stationPhi = -999;
175  digitWrapper dW = event_it->second[0];
176  Identifier tmpID = dW.id();
177  stationPhi = m_MmIdHelper->stationPhi(tmpID);
178 
179  // Finally, let's start with hits
180  auto reco_it = Hits_Data_Set_Time.find(pair_event);
181  if (reco_it != Hits_Data_Set_Time.end()) {
182  if (reco_it->second.size() >= (diamond->getXthreshold()+diamond->getUVthreshold())) {
183  if (do_MMDiamonds) {
184  /*
185  * Filling hits for each event: a new class, MMT_Hit, is called in
186  * order to use both algorithms witghout interferences
187  */
188  diamond->createRoads_fillHits(i-nskip, reco_it->second, m_detManager, pars[station], stationPhi);
189  if (m_doNtuple) {
190  for(const auto &hit : reco_it->second) {
191  m_trigger_VMM->push_back(hit.VMM_chip);
192  m_trigger_plane->push_back(hit.plane);
193  m_trigger_station->push_back(hit.station_eta);
194  m_trigger_strip->push_back(hit.strip);
195  }
196  std::vector<double> slopes = diamond->getHitSlopes();
197  for (const auto &s : slopes) m_trigger_RZslopes->push_back(s);
198  slopes.clear();
199  }
200  diamond->resetSlopes();
201  /*
202  * Here we create roads with all MMT_Hit collected before (if any), then we save the results
203  */
204  diamond->findDiamonds(i-nskip, event);
205 
206  if (!diamond->getSlopeVector(i-nskip).empty()) {
207  if (m_doNtuple) {
208  m_trigger_diamond_ntrig->push_back(diamond->getSlopeVector(i-nskip).size());
209  for (const auto &slope : diamond->getSlopeVector(i-nskip)) {
210  m_trigger_diamond_sector->push_back(diamond->getDiamond(i-nskip).sector);
211  m_trigger_diamond_stationPhi->push_back(diamond->getDiamond(i-nskip).stationPhi);
212  m_trigger_diamond_bc->push_back(slope.BC);
213  m_trigger_diamond_totalCount->push_back(slope.totalCount);
214  m_trigger_diamond_realCount->push_back(slope.realCount);
215  m_trigger_diamond_XbkgCount->push_back(slope.xbkg);
216  m_trigger_diamond_UVbkgCount->push_back(slope.uvbkg);
217  m_trigger_diamond_XmuonCount->push_back(slope.xmuon);
218  m_trigger_diamond_UVmuonCount->push_back(slope.uvmuon);
219  m_trigger_diamond_iX->push_back(slope.iRoad);
220  m_trigger_diamond_iU->push_back(slope.iRoadu);
221  m_trigger_diamond_iV->push_back(slope.iRoadv);
222  m_trigger_diamond_age->push_back(slope.age);
223  m_trigger_diamond_mx->push_back(slope.mx);
224  m_trigger_diamond_my->push_back(slope.my);
225  m_trigger_diamond_Uavg->push_back(slope.uavg);
226  m_trigger_diamond_Vavg->push_back(slope.vavg);
227  m_trigger_diamond_mxl->push_back(slope.mxl);
228  m_trigger_diamond_theta->push_back(slope.theta);
229  m_trigger_diamond_eta->push_back(slope.eta);
230  m_trigger_diamond_dtheta->push_back(slope.dtheta);
231  m_trigger_diamond_phi->push_back(slope.phi);
232  m_trigger_diamond_phiShf->push_back(slope.phiShf);
233  }
234  }
235 
236  // MM RDO filling below
237  std::vector<int> slopeBC;
238  for (const auto &slope : diamond->getSlopeVector(i-nskip)) slopeBC.push_back(slope.BC);
239  std::sort(slopeBC.begin(), slopeBC.end());
240  slopeBC.erase( std::unique(slopeBC.begin(), slopeBC.end()), slopeBC.end() );
241  for (const auto &bc : slopeBC) {
242  Muon::NSW_TrigRawData* trigRawData = new Muon::NSW_TrigRawData(diamond->getDiamond(i-nskip).stationPhi, diamond->getDiamond(i-nskip).side, bc);
243 
244  for (const auto &slope : diamond->getSlopeVector(i-nskip)) {
245  if (bc == slope.BC) {
247 
248  // Phi-id - here use local phi (not phiShf)
249  uint8_t phi_id = 0;
250  if (slope.phi > m_phiMax || slope.phi < m_phiMin) trigRawDataSegment->setPhiIndex(phi_id);
251  else {
252  uint8_t nPhi = (1<<m_phiBits) -2; // To accomodate the new phi-id encoding prescription around 0
253  float phiSteps = (m_phiMax - m_phiMin)/nPhi;
254  for (uint8_t i=0; i<nPhi; i++) {
255  if ((slope.phi) < (m_phiMin+i*phiSteps)) {
256  phi_id = i;
257  break;
258  }
259  }
260  trigRawDataSegment->setPhiIndex(phi_id);
261  }
262  if (m_doNtuple) m_trigger_diamond_TP_phi_id->push_back(phi_id);
263 
264  // R-id
265  double extrapolatedR = 7824.46*std::abs(std::tan(slope.theta)); // The Z plane is a fixed value, taken from SL-TP documentation
266  uint8_t R_id = 0;
267  if (extrapolatedR > m_rMax || extrapolatedR < m_rMin) trigRawDataSegment->setRIndex(R_id);
268  else {
269  uint8_t nR = (1<<m_rBits) -1;
270  float Rsteps = (m_rMax - m_rMin)/nR;
271  for (uint8_t j=0; j<nR; j++) {
272  if (extrapolatedR < (m_rMin+j*Rsteps)) {
273  R_id = j;
274  break;
275  }
276  }
277  trigRawDataSegment->setRIndex(R_id);
278  }
279  if (m_doNtuple) m_trigger_diamond_TP_R_id->push_back(R_id);
280 
281  // DeltaTheta-id
282  uint8_t dTheta_id = 0;
283  if (slope.dtheta > m_dThetaMax || slope.dtheta < m_dThetaMin) trigRawDataSegment->setDeltaTheta(dTheta_id);
284  else {
285  uint8_t ndTheta = (1<<m_dThetaBits) -1;
286  float dThetaSteps = (m_dThetaMax - m_dThetaMin)/ndTheta;
287  for (uint8_t k=0; k<ndTheta; k++) {
288  if ((slope.dtheta) < (m_dThetaMin+k*dThetaSteps)) {
289  dTheta_id = k;
290  break;
291  }
292  }
293  trigRawDataSegment->setDeltaTheta(dTheta_id);
294  }
295  if (m_doNtuple) m_trigger_diamond_TP_dTheta_id->push_back(dTheta_id);
296 
297  // Low R-resolution bit
298  trigRawDataSegment->setLowRes(slope.lowRes);
299 
300  trigRawData->push_back(trigRawDataSegment);
301  }
302  }
303  rdo->push_back(trigRawData);
304  }
305  ATH_MSG_DEBUG("Filled MM RDO container now having size: " << rdo->size() << ". Clearing event information!");
306  } else ATH_MSG_DEBUG("No output slopes to store");
307  } else ATH_MSG_WARNING("No algorithm defined, exiting gracefully");
308  } else {
309  ATH_MSG_DEBUG( "Available hits are " << reco_it->second.size() << ", less than X+UV threshold, skipping" );
310  nskip++;
311  }
312  } else {
313  ATH_MSG_WARNING( "Empty hit map, skipping" );
314  nskip++;
315  }
316  } // Main particle loop
317  entries.clear();
318  Hits_Data_Set_Time.clear();
319  Event_Info.clear();
320  if (do_MMDiamonds) diamond->clearEvent();
321 
322  return StatusCode::SUCCESS;
323  }
324 }//end namespace
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
NSWL1::MMTriggerTool::m_keyMmDigitContainer
SG::ReadHandleKey< MmDigitContainer > m_keyMmDigitContainer
Definition: MMTriggerTool.h:60
MMT_Diamond::getSlopeVector
std::vector< slope_t > getSlopeVector(const unsigned int iterator) const
Definition: MMT_Diamond.h:65
NSWL1::MMTriggerTool::m_diamXthreshold
Gaudi::Property< int > m_diamXthreshold
Definition: MMTriggerTool.h:68
make_hlt_rep.pars
pars
Definition: make_hlt_rep.py:90
NSWL1::MMTriggerTool::m_diamOverlapStereoDown
Gaudi::Property< int > m_diamOverlapStereoDown
Definition: MMTriggerTool.h:73
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
NSWL1::MMTriggerTool::m_diamOverlapEtaUp
Gaudi::Property< int > m_diamOverlapEtaUp
Definition: MMTriggerTool.h:70
MMT_Diamond::setUV
void setUV(bool flag)
Definition: MMT_Diamond.h:88
MMT_Diamond::resetSlopes
void resetSlopes()
Definition: MMT_Diamond.cxx:278
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:575
SG::ReadHandle::cptr
const_pointer_type cptr()
Dereference the pointer.
NSWL1::MMTriggerTool::m_dThetaMin
Gaudi::Property< float > m_dThetaMin
Definition: MMTriggerTool.h:84
SG::ReadHandle< McEventCollection >
NSWL1::MMTriggerTool::m_phiMax
Gaudi::Property< float > m_phiMax
Definition: MMTriggerTool.h:79
NSWL1::MMTriggerTool::initialize
virtual StatusCode initialize()
Definition: MMTriggerTool.cxx:20
AtlasHitsVector
Definition: AtlasHitsVector.h:33
Muon::NSW_TrigRawData
Definition: NSW_TrigRawData.h:15
skel.it
it
Definition: skel.GENtoEVGEN.py:423
NSWL1::MMTriggerTool::m_diamOverlapEtaDown
Gaudi::Property< int > m_diamOverlapEtaDown
Definition: MMTriggerTool.h:71
MMT_Diamond::getHitSlopes
std::vector< double > getHitSlopes() const
Definition: MMT_Diamond.h:63
NSWL1::MMTriggerTool::book_branches
StatusCode book_branches()
book the branches
Definition: MMTriggerToolTree.cxx:27
Muon::NSW_TrigRawDataSegment::setDeltaTheta
void setDeltaTheta(uint8_t deltaTheta)
Definition: NSW_TrigRawDataSegment.h:36
MMT_Diamond::setRoadSizeUpX
void setRoadSizeUpX(int sizeUp)
Definition: MMT_Diamond.h:77
MMLoadVariables
Definition: MMLoadVariables.h:49
NSWL1::MMTriggerTool::m_rMax
Gaudi::Property< float > m_rMax
Definition: MMTriggerTool.h:82
MMT_Diamond::getDiamond
diamond_t getDiamond(const unsigned int iterator) const
Definition: MMT_Diamond.h:62
TrigVSI::AlgConsts::nPhi
constexpr int nPhi
Default bin number of phi for vertex map.
Definition: Trigger/TrigTools/TrigVrtSecInclusive/TrigVrtSecInclusive/Constants.h:27
AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
MMT_Diamond::createRoads_fillHits
void createRoads_fillHits(const unsigned int iterator, std::vector< hitData_entry > &hitDatas, const MuonGM::MuonDetectorManager *detManager, std::shared_ptr< MMT_Parameters > par, const int phi)
Definition: MMT_Diamond.cxx:22
Muon::NSW_TrigRawDataSegment::setRIndex
void setRIndex(uint8_t rIndex)
Definition: NSW_TrigRawDataSegment.h:38
NSWL1::MMTriggerTool::m_uv
Gaudi::Property< bool > m_uv
Definition: MMTriggerTool.h:67
Muon::NSW_TrigRawDataSegment::setPhiIndex
void setPhiIndex(uint8_t phiIndex)
Definition: NSW_TrigRawDataSegment.h:37
MMTriggerTool.h
NSWL1::MMTriggerTool::m_mmDigitContainer
Gaudi::Property< std::string > m_mmDigitContainer
Definition: MMTriggerTool.h:76
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
NSWL1::MMTriggerTool::m_MmIdHelper
const MmIdHelper * m_MmIdHelper
MM offline Id helper.
Definition: MMTriggerTool.h:91
event
POOL::TEvent event(POOL::TEvent::kClassAccess)
diamond_t::stationPhi
int stationPhi
Definition: MMT_Diamond.h:47
lumiFormat.i
int i
Definition: lumiFormat.py:92
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
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
CaloNoise_fillDB.dt
dt
Definition: CaloNoise_fillDB.py:58
NSWL1::MMTriggerTool::m_detManager
const MuonGM::MuonDetectorManager * m_detManager
MuonDetectorManager.
Definition: MMTriggerTool.h:90
test_pyathena.parent
parent
Definition: test_pyathena.py:15
MMT_Diamond::setTrapezoidalShape
void setTrapezoidalShape(bool flag)
Definition: MMT_Diamond.h:69
MMT_Diamond::getXthreshold
unsigned int getXthreshold() const
Definition: MMT_Diamond.h:85
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
MMT_Diamond::setRoadSizeDownUV
void setRoadSizeDownUV(int sizeDownUV)
Definition: MMT_Diamond.h:83
drawFromPickle.tan
tan
Definition: drawFromPickle.py:36
NSWL1::MMTriggerTool::m_keyMuonEntryLayer
SG::ReadHandleKey< TrackRecordCollection > m_keyMuonEntryLayer
Definition: MMTriggerTool.h:59
evInf_entry
Definition: MMT_struct.h:59
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
McEventCollection
This defines the McEventCollection, which is really just an ObjectVector of McEvent objects.
Definition: McEventCollection.h:33
NSWL1::MMTriggerTool::fillNtuple
void fillNtuple(const histogramDigitVariables &histDigVars) const
Definition: MMTriggerToolTree.cxx:233
MMT_Diamond::setRoadSizeUpUV
void setRoadSizeUpUV(int sizeUpUV)
Definition: MMT_Diamond.h:81
Muon::NSW_TrigRawDataSegment
Definition: NSW_TrigRawDataSegment.h:15
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
NSWL1::MMTriggerTool::MMTriggerTool
MMTriggerTool(const std::string &type, const std::string &name, const IInterface *parent)
Definition: MMTriggerTool.cxx:11
MuonIdHelper::stationPhi
int stationPhi(const Identifier &id) const
Definition: MuonIdHelper.cxx:814
MMT_Diamond::setXthreshold
void setXthreshold(int threshold)
Definition: MMT_Diamond.h:86
MMT_Diamond::findDiamonds
void findDiamonds(const unsigned int iterator, const int event)
Definition: MMT_Diamond.cxx:110
MMT_Diamond::clearEvent
void clearEvent()
Definition: MMT_Diamond.cxx:11
NSWL1::MMTriggerTool::m_trapShape
Gaudi::Property< bool > m_trapShape
Definition: MMTriggerTool.h:65
NSWL1::MMTriggerTool::m_diamRoadSize
Gaudi::Property< int > m_diamRoadSize
Definition: MMTriggerTool.h:66
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
diamond_t::sector
char sector
Definition: MMT_Diamond.h:45
NSWL1::MMTriggerTool::m_dThetaMax
Gaudi::Property< float > m_dThetaMax
Definition: MMTriggerTool.h:85
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
mc.nskip
nskip
Definition: mc.PhPy8EG_Hto4l_NNLOPS_nnlo_30_ggH125_ZZ4l.py:41
MMT_Diamond::getUVthreshold
unsigned int getUVthreshold() const
Definition: MMT_Diamond.h:89
NSWL1::MMTriggerTool::m_incidentSvc
ServiceHandle< IIncidentSvc > m_incidentSvc
Athena/Gaudi incident Service.
Definition: MMTriggerTool.h:55
NSWL1::MMTriggerTool::m_keyMcEventCollection
SG::ReadHandleKey< McEventCollection > m_keyMcEventCollection
Definition: MMTriggerTool.h:58
NSWL1::MMTriggerTool::m_par_small
std::shared_ptr< MMT_Parameters > m_par_small
Definition: MMTriggerTool.h:89
histogramDigitVariables
Definition: MMLoadVariables.h:30
diamond_t::side
char side
Definition: MMT_Diamond.h:46
MMT_Diamond::setUVthreshold
void setUVthreshold(int threshold)
Definition: MMT_Diamond.h:90
Muon::NSW_TrigRawDataSegment::setLowRes
void setLowRes(bool lowRes)
Definition: NSW_TrigRawDataSegment.h:41
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
jobOptions.epos
epos
Definition: jobOptions.crmc.py:50
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
LArG4FSStartPointFilter.particles
list particles
Definition: LArG4FSStartPointFilter.py:84
entries
double entries
Definition: listroot.cxx:49
MMT_Diamond::setRoadSize
void setRoadSize(int size)
Definition: MMT_Diamond.h:75
NSWL1::MMTriggerTool::m_isMC
Gaudi::Property< bool > m_isMC
Definition: MMTriggerTool.h:61
NSWL1::MMTriggerTool::m_diamUVthreshold
Gaudi::Property< int > m_diamUVthreshold
Definition: MMTriggerTool.h:69
NSWL1::MMTriggerTool::m_diamOverlapStereoUp
Gaudi::Property< int > m_diamOverlapStereoUp
Definition: MMTriggerTool.h:72
python.root_pickle.load
def load(f, use_proxy=1, key=None)
Definition: root_pickle.py:476
AthAlgTool
Definition: AthAlgTool.h:26
NSWL1::MMTriggerTool::m_doTruth
Gaudi::Property< bool > m_doTruth
Definition: MMTriggerTool.h:62
Muon::NSW_TrigRawDataContainer
Definition: NSW_TrigRawDataContainer.h:14
digitWrapper::id
Identifier id() const
Definition: MMT_struct.h:98
LArCellBinning.phiSteps
dictionary phiSteps
Definition: LArCellBinning.py:37
NSWL1::MMTriggerTool::m_rBits
Gaudi::Property< int > m_rBits
Definition: MMTriggerTool.h:83
MMT_Diamond::setRoadSizeDownX
void setRoadSizeDownX(int sizeDown)
Definition: MMT_Diamond.h:79
NSWL1
A trigger trigger candidate for a stgc sector.
Definition: NSWL1Simulation.cxx:9
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
NSWL1::MMTriggerTool::m_rMin
Gaudi::Property< float > m_rMin
Definition: MMTriggerTool.h:81
NSWL1::MMTriggerTool::runTrigger
StatusCode runTrigger(const EventContext &ctx, Muon::NSW_TrigRawDataContainer *rdo, const bool do_MMDiamonds) const
Definition: MMTriggerTool.cxx:69
digitWrapper
Definition: MMT_struct.h:82
NSWL1::MMTriggerTool::m_phiBits
Gaudi::Property< int > m_phiBits
Definition: MMTriggerTool.h:80
NSWL1::MMTriggerTool::m_phiMin
Gaudi::Property< float > m_phiMin
Definition: MMTriggerTool.h:78
NSWL1::MMTriggerTool::m_doNtuple
Gaudi::Property< bool > m_doNtuple
Definition: MMTriggerTool.h:77
fitman.k
k
Definition: fitman.py:528
NSWL1::MMTriggerTool::m_par_large
std::shared_ptr< MMT_Parameters > m_par_large
Definition: MMTriggerTool.h:88
NSWL1::MMTriggerTool::m_dThetaBits
Gaudi::Property< int > m_dThetaBits
Definition: MMTriggerTool.h:86