ATLAS Offline Software
Classes | Public Types | Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
FPGATrackSimMapMakerAlg Class Reference

#include <FPGATrackSimMapMakerAlg.h>

Inheritance diagram for FPGATrackSimMapMakerAlg:
Collaboration diagram for FPGATrackSimMapMakerAlg:

Classes

struct  Module
 

Public Types

typedef std::tuple< SiliconTech, DetectorZone, int, int, int > FPGATrackSimModuleId
 

Public Member Functions

 FPGATrackSimMapMakerAlg (const std::string &name, ISvcLocator *pSvcLocator)
 
virtual ~FPGATrackSimMapMakerAlg ()=default
 
StatusCode initialize () override
 
StatusCode execute () override
 
StatusCode finalize () override
 
virtual StatusCode sysInitialize () override
 Override sysInitialize. More...
 
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies. More...
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
 
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed. More...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

StatusCode readInputs (bool &done)
 
StatusCode writePmapAndRmap (std::vector< FPGATrackSimHit > const &pbHits, std::vector< FPGATrackSimHit > const &peHits, std::vector< FPGATrackSimHit > const &sbHits, std::vector< FPGATrackSimHit > const &seHits, int region)
 
StatusCode writeSubrmap (std::vector< FPGATrackSimHit > const &allHits)
 
StatusCode writeEtaPatterns ()
 
StatusCode writeRadiiFile (std::vector< FPGATrackSimHit > const &allHits)
 
StatusCode writeMedianZFile (std::vector< FPGATrackSimHit > const &allHits)
 
void drawSlices (std::vector< FPGATrackSimHit > const &allHits)
 
bool isOnKeyLayer (int keynum, SiliconTech det, DetectorZone bec, int lyr)
 
int findPlane (const std::vector< std::vector< std::string >> *planes, const std::string &test)
 
std::string makeRmapLines (std::vector< FPGATrackSimHit > const &hits, SiliconTech det, DetectorZone bec, int max)
 
std::string makeSubrmapLines (std::vector< Module * > const &allmods, SiliconTech det, DetectorZone bec, int max)
 
void parseKeyString ()
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

ToolHandle< IFPGATrackSimEventInputHeaderToolm_hitInputTool { this, "InputTool", "FPGATrackSimSGToRawHitsTool/FPGATrackSimInputTool", "HitInput Tool" }
 
ToolHandle< IFPGATrackSimInputToolm_hitSGInputTool {this, "SGInputTool", "", "Input tool from SG"}
 
ServiceHandle< IFPGATrackSimEventSelectionSvcm_evtSel {this, "eventSelector", "", "Event selection Svc"}
 
FPGATrackSimEventInputHeader m_eventHeader
 
Gaudi::Property< int > m_maxEvents {this, "maxEvents", 10000, "Max Events"}
 
Gaudi::Property< int > m_region {this, "region", 0, "Region"}
 
Gaudi::Property< float > m_trim {this, "trim", 0.1, "trim modules with less than given percent of tracks"}
 
Gaudi::Property< std::string > m_outFileName {this, "OutFileName", "", "naming convention for maps"}
 
Gaudi::Property< std::string > m_keystring {this, "KeyString", "strip,barrel,2", "key layer to use for subrmap"}
 
Gaudi::Property< std::string > m_keystring2 {this, "KeyString2", "", "second key layer for 2D slicing"}
 
Gaudi::Property< int > m_nSlices {this, "nSlices", -1, "default is full granularity/maximum number of slices possible"}
 
Gaudi::Property< float > m_globalTrim {this, "globalTrim", 0.1, "Trimming applied globally to the key layer before determining slice boundaries"}
 
Gaudi::Property< std::string > m_description {this, "description", "", "tag description"}
 
Gaudi::Property< std::string > m_geoTag {this, "GeometryVersion", "ATLAS-P2-ITK-22-02-00", "Geometry tag that this set of maps is for. TODO can we store/read from wrappers?"}
 
Gaudi::Property< bool > m_remapModules {this, "remapModules", false, "Allow maps to be drawn that slice modules more finely, by remapping module indices"}
 
Gaudi::Property< bool > m_drawSlices {this, "drawSlices", false, "Draw the huge 2D slice histograms"}
 
FPGATrackSimModuleRelabelm_moduleRelabel = nullptr
 
std::map< FPGATrackSimModuleId, Modulem_modules
 
std::map< int, std::vector< Module * > > m_track2modules
 
std::map< int, std::vector< Module * > > m_slice2modules
 
std::map< int, int > m_track2slice
 
std::vector< FPGATrackSimHitm_pbHits
 
std::vector< FPGATrackSimHitm_peHits
 
std::vector< FPGATrackSimHitm_sbHits
 
std::vector< FPGATrackSimHitm_seHits
 
std::vector< FPGATrackSimHitm_allHits
 
int m_pbmax = -1
 
int m_sbmax = -1
 
std::vector< int > m_pemax = {-1,-1}
 
std::vector< int > m_semax = {-1,-1}
 
const std::vector< std::vector< std::string > > * m_planes {}
 
const std::vector< std::vector< std::string > > * m_planes2 {}
 
const std::vector< std::vector< std::string > > m_planes_generic
 
const std::vector< std::vector< std::string > > m_planes2_generic
 
Gaudi::Property< std::vector< std::vector< std::string > > > m_overridePlanes {this, "planes", m_planes_generic, "Logical layer assignments" }
 
Gaudi::Property< std::vector< std::vector< std::string > > > m_overridePlanes2 {this, "planes2", m_planes2_generic, "Logical layer assignments" }
 
std::map< std::string, std::set< int > > m_keylayer
 
std::map< std::string, std::set< int > > m_keylayer2
 
bool m_key2 = false
 
std::map< int, int > m_key_etamods
 
std::set< int > m_key_etamods2
 
std::set< int > m_usedTracks
 
std::vector< std::vector< std::vector< float > > > m_radii
 
std::vector< std::vector< std::vector< float > > > m_z
 
std::ofstream m_pmap
 
std::ofstream m_rmap
 
std::ofstream m_subrmap
 
std::ofstream m_etapat
 
std::ofstream m_radfile
 
std::ofstream m_zedfile
 
std::unique_ptr< TFile > m_monitorFile {}
 
const std::vector< uint32_t > m_diskIndex = {0,17,47,58,66}
 
std::map< std::string, SiliconTechm_det2tech = { {"pixel",SiliconTech::pixel}, {"strip",SiliconTech::strip} }
 
std::map< std::string, DetectorZonem_bec2zone = { {"barrel",DetectorZone::barrel}, {"posEndcap",DetectorZone::posEndcap}, {"negEndcap",DetectorZone::negEndcap} }
 
DataObjIDColl m_extendedExtraObjects
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Detailed Description

Definition at line 33 of file FPGATrackSimMapMakerAlg.h.

Member Typedef Documentation

◆ FPGATrackSimModuleId

Definition at line 36 of file FPGATrackSimMapMakerAlg.h.

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ FPGATrackSimMapMakerAlg()

FPGATrackSimMapMakerAlg::FPGATrackSimMapMakerAlg ( const std::string &  name,
ISvcLocator *  pSvcLocator 
)

Definition at line 17 of file FPGATrackSimMapMakerAlg.cxx.

17  :
18  AthAlgorithm(name, pSvcLocator)
19 {
20 }

◆ ~FPGATrackSimMapMakerAlg()

virtual FPGATrackSimMapMakerAlg::~FPGATrackSimMapMakerAlg ( )
virtualdefault

Member Function Documentation

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > &  hndl,
const SG::VarHandleKeyArrayType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKeyArray>

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > &  hndl,
const SG::VarHandleKeyType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > &  hndl,
const SG::VarHandleType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleBase>

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( Gaudi::Property< T, V, H > &  t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

◆ detStore()

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< Algorithm > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ drawSlices()

void FPGATrackSimMapMakerAlg::drawSlices ( std::vector< FPGATrackSimHit > const allHits)
private

Definition at line 741 of file FPGATrackSimMapMakerAlg.cxx.

742 {
743  m_monitorFile->cd();
744 
745  std::vector<TH2F*> h_slicemap;
746  char *hname = new char[20];
747 
748  for (unsigned i = 0; i < (unsigned)m_nSlices.value(); i++)
749  {
750  sprintf(hname,"rz_slice%u",i);
751  // This should just default to the entire range, I think.
752  // The user can reduce the binning.
753  TH2F *h = new TH2F(hname,hname,7000,-3500,3500,1200,0,1200);
754  h_slicemap.push_back(h);
755  }
756 
757  for (const auto& hit: allHits)
758  {
759  if (m_usedTracks.find(hit.getEventIndex()) == m_usedTracks.end()) continue; // skip if we don't use this track
760  int s = m_track2slice[hit.getEventIndex()];
761  h_slicemap[s]->Fill(hit.getZ(),hit.getR());
762  }
763 
764  for (int i = 0; i < m_nSlices.value(); i++)
765  h_slicemap[i]->Write();
766 
767  delete [] hname;
768 }

◆ evtStore() [1/2]

ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore ( ) const
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ execute()

StatusCode FPGATrackSimMapMakerAlg::execute ( )
override

Definition at line 69 of file FPGATrackSimMapMakerAlg.cxx.

70 {
71  // Read inputs
72  bool done = false;
73  ATH_CHECK(readInputs(done));
74 
75  if (done) {
76  SmartIF<IEventProcessor> appMgr{service("ApplicationMgr")};
77  if (!appMgr) {
78  ATH_MSG_ERROR("Failed to retrieve ApplicationMgr as IEventProcessor");
79  return StatusCode::FAILURE;
80  }
81  return appMgr->stopRun();
82  }
83 
84  // Reset data pointers
86 
87  return StatusCode::SUCCESS;
88 }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase &  ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ extraOutputDeps()

const DataObjIDColl & AthAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 50 of file AthAlgorithm.cxx.

51 {
52  // If we didn't find any symlinks to add, just return the collection
53  // from the base class. Otherwise, return the extended collection.
54  if (!m_extendedExtraObjects.empty()) {
56  }
57  return Algorithm::extraOutputDeps();
58 }

◆ finalize()

StatusCode FPGATrackSimMapMakerAlg::finalize ( )
override

Definition at line 723 of file FPGATrackSimMapMakerAlg.cxx.

724 {
725  // Write the output
731  m_monitorFile.reset();
732  delete m_moduleRelabel;
733  m_moduleRelabel = nullptr;
734  return StatusCode::SUCCESS;
735 }

◆ findPlane()

int FPGATrackSimMapMakerAlg::findPlane ( const std::vector< std::vector< std::string >> *  planes,
const std::string &  test 
)
private

Definition at line 785 of file FPGATrackSimMapMakerAlg.cxx.

786 {
787  int pcounter = 0;
788  for (auto& plane : *planes) {
789  for (auto& layer : plane) {
790  if (test == layer) return pcounter;
791  }
792  pcounter ++;
793  }
794  return -1;
795 }

◆ initialize()

StatusCode FPGATrackSimMapMakerAlg::initialize ( )
override

Definition at line 23 of file FPGATrackSimMapMakerAlg.cxx.

24 {
25 
26  m_monitorFile.reset (new TFile((m_outFileName.value() + "region" + std::to_string(m_region) + ".root").c_str(), "RECREATE"));
27  std::stringstream ss(m_description);
28  std::string line;
29  ATH_MSG_INFO("Tag config:");
30  if (m_description.value() != "")
31  while (std::getline(ss, line, '\n'))
32  ATH_MSG_INFO('\t' << line);
33 
34  // reset Hit and Module vectors
35  m_pbHits.clear(); m_peHits.clear(); m_sbHits.clear(); m_seHits.clear(); m_allHits.clear();
36  m_track2modules.clear(); m_track2slice.clear(); m_slice2modules.clear();
37  m_key_etamods.clear(); m_key_etamods2.clear(); m_usedTracks.clear();
38  m_radii.clear(); m_keylayer.clear(); m_keylayer2.clear();
39  m_modules.clear();
40 
41  // Set up the module relabel tool.
43 
44  // We need to select this before calling parseKeyString() in case the user
45  // has specified a plane (logical layer) as the keystring.
46  // If running with the new regions. Don't use the hardcoded layer assignments. Use either a generic one
47  // or one passed in via a flag.
48  ATH_MSG_INFO("Using Python configuration for regions. All pixel layers -> first stage, all strip layers -> second stage");
49  m_planes = &(m_overridePlanes.value());
50  m_planes2 = &(m_overridePlanes2.value());
51 
53  ATH_CHECK(m_evtSel.retrieve());
54 
55  ATH_CHECK(m_hitSGInputTool.retrieve(EnableTool{!m_hitSGInputTool.empty()}));
56  ATH_CHECK(m_hitInputTool.retrieve(EnableTool{!m_hitInputTool.empty()}));
57 
58  ATH_MSG_DEBUG("initialize() Instantiating root objects");
59  ATH_MSG_DEBUG("initialize() Finished");
60 
61 
62  return StatusCode::SUCCESS;
63 }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< Algorithm > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ isOnKeyLayer()

bool FPGATrackSimMapMakerAlg::isOnKeyLayer ( int  keynum,
SiliconTech  det,
DetectorZone  bec,
int  lyr 
)
private

Definition at line 770 of file FPGATrackSimMapMakerAlg.cxx.

771 {
772  int det = static_cast<int>(t_det);
773  int bec = static_cast<int>(t_bec);
774  if (keynum == 1)
775  if (m_keylayer["det"].find(det) != m_keylayer["det"].end() && m_keylayer["bec"].find(bec) != m_keylayer["bec"].end() && m_keylayer["lyr"].find(lyr) != m_keylayer["lyr"].end())
776  return true;
777 
778  if (keynum == 2)
779  if (m_keylayer2["det"].find(det) != m_keylayer2["det"].end() && m_keylayer2["bec"].find(bec) != m_keylayer2["bec"].end() && m_keylayer2["lyr"].find(lyr) != m_keylayer2["lyr"].end())
780  return true;
781 
782  return false;
783 }

◆ makeRmapLines()

std::string FPGATrackSimMapMakerAlg::makeRmapLines ( std::vector< FPGATrackSimHit > const hits,
SiliconTech  det,
DetectorZone  bec,
int  max 
)
private

Definition at line 797 of file FPGATrackSimMapMakerAlg.cxx.

798 {
799  std::stringstream rmap_line;
800  std::set<int> etas, phis;
801 
802  for(int lyr = 0; lyr <= max; lyr++)
803  {
804  etas.clear();
805  phis.clear();
806  for (const auto& hit: hits)
807  {
808  if(static_cast<int>(hit.getPhysLayer()) == lyr && hit.getDetectorZone() == bec) // cast from uint to int just to remove Wsign-compare warnings
809  {
810  etas.insert(hit.getEtaModule());
811  phis.insert(hit.getPhiModule());
812  }
813  }
814  if (etas.size() != 0) rmap_line << static_cast<int>(det) << " " << static_cast<int>(bec) << " " << lyr << " " << *phis.begin() << " " << *phis.rbegin() << " " << phis.size() << " " << *etas.begin() << " " << *etas.rbegin() << " " << etas.size() << "\n";
815  else rmap_line << static_cast<int>(det) << " " << static_cast<int>(bec) << " " << lyr << " 0 0 0 0 0 0\n";
816 
817  }
818 
819  return rmap_line.str();
820 }

◆ makeSubrmapLines()

std::string FPGATrackSimMapMakerAlg::makeSubrmapLines ( std::vector< Module * > const allmods,
SiliconTech  det,
DetectorZone  bec,
int  max 
)
private

Definition at line 920 of file FPGATrackSimMapMakerAlg.cxx.

921 {
922  std::stringstream subrmap_line;
923  std::set<int> etas, phis;
924 
925  std::vector<Module*> mods;
926  for (auto* mod: allmods) // just want modules in pb/pe/sb/se etc, not all at once
927  if (mod->det == det && mod->bec == bec) mods.push_back(mod);
928 
929  for(int lyr = 0; lyr <= max; lyr++)
930  {
931  etas.clear();
932  phis.clear();
933  for (auto mod: mods)
934  {
935  if(mod->lyr == lyr)
936  {
937  etas.insert(mod->eta);
938  phis.insert(mod->phi);
939  }
940  }
941  if (etas.size() != 0) subrmap_line << static_cast<int>(det) << " " << static_cast<int>(bec) << " " << lyr << " " << *phis.begin() << " " << *phis.rbegin() << " " << phis.size() << " " << *etas.begin() << " " << *etas.rbegin() << " " << etas.size() << "\n";
942  else subrmap_line << static_cast<int>(det) << " " << static_cast<int>(bec) << " " << lyr << " 0 0 0 0 0 0\n";
943 
944  }
945 
946  return subrmap_line.str();
947 }

◆ msg() [1/2]

MsgStream& AthCommonMsg< Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24  {
25  return this->msgStream();
26  }

◆ msg() [2/2]

MsgStream& AthCommonMsg< Algorithm >::msg ( const MSG::Level  lvl) const
inlineinherited

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ msgLvl()

bool AthCommonMsg< Algorithm >::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30  {
31  return this->msgLevel(lvl);
32  }

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< Algorithm > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ parseKeyString()

void FPGATrackSimMapMakerAlg::parseKeyString ( )
private

Definition at line 822 of file FPGATrackSimMapMakerAlg.cxx.

823 {
824  // Parse keystring and define the Key Layer
825  std::string delimiter = ",";
826  std::string s = m_keystring.value();
827  std::string det, bec, lyr;
828  std::map <std::string, std::vector<std::string>> abrevs = { {"pb",{"pixel","barrel"}}, {"pe",{"pixel","endcap"}}, {"sb",{"strip","barrel"}}, {"se",{"strip","endcap"}} };
829  if( s.find(delimiter) != std::string::npos) // keylayer format is 'strip,barrel,4'
830  {
831  try {
832  std::string det = s.substr(0, s.find(delimiter));
833  s.erase(0, s.find(delimiter) + delimiter.length());
834  std::string bec = s.substr(0, s.find(delimiter));
835  s.erase(0, s.find(delimiter) + delimiter.length());
836  std::string lyr = s.substr(0, s.find(delimiter));
837  s.erase(0, s.find(delimiter) + delimiter.length());
838  m_keylayer["det"].insert(static_cast<int>(m_det2tech[det]));
839  m_keylayer["bec"].insert(static_cast<int>(m_bec2zone[bec]));
840  m_keylayer["lyr"].insert(std::stoi(lyr));
841  ATH_MSG_INFO("Using key layer: " << m_keystring.value());
842  } catch (...){
843  ATH_MSG_ERROR("Invalid KeyString: '" << m_keystring.value() << "'." << "Accepted formats are 'strip,posEndcap,2', 'pixel,barrel,3', or 'plane 0'");
844  }
845  }
846  else // keylayer format is 'plane 0'
847  {
848  std::string delimiter = " ";
849  try {
850  s.erase(0, s.find(delimiter) + delimiter.length());
851  std::string plane = s.substr(0, s.find(delimiter));
852  std::vector<std::string> s = (m_planes)->at(std::stoi(plane));
853  for (unsigned i = 0; i < s.size(); i++){
854  std::string reg = s[i].substr(0, 2);
855  std::vector<std::string> zone = abrevs[reg];
856  if (s[i].back() == '+') zone[1] = "posEndcap";
857  if (s[i].back() == '-') zone[1] = "negEndcap";
858  s[i].erase(std::remove(s[i].begin(), s[i].end(), '+'), s[i].end());
859  s[i].erase(std::remove(s[i].begin(), s[i].end(), '-'), s[i].end());
860  std::string lyr = s[i].substr(2);
861  m_keylayer["det"].insert(static_cast<int>(m_det2tech[zone[0]]));
862  m_keylayer["bec"].insert(static_cast<int>(m_bec2zone[zone[1]]));
863  m_keylayer["lyr"].insert(std::stoi(lyr));
864  }
865  ATH_MSG_INFO("Using key layer (in plane X format) " << m_keystring.value());
866  } catch (...){
867  ATH_MSG_ERROR("Invalid KeyString: '" << m_keystring.value() << "'." << "Accepted formats are 'strip,posEndcap,2', 'pixel,barrel,3', or 'plane 0'");
868  }
869  }
870 
871  // if 2D slicing
872  if (m_keystring2.value() != "")
873  {
874  m_key2 = true;
875  std::string s = m_keystring2.value();
876  if( s.find(delimiter) != std::string::npos) // keylayer format is 'strip,barrel,8'
877  {
878  try {
879  std::string det = s.substr(0, s.find(delimiter));
880  s.erase(0, s.find(delimiter) + delimiter.length());
881  std::string bec = s.substr(0, s.find(delimiter));
882  s.erase(0, s.find(delimiter) + delimiter.length());
883  std::string lyr = s.substr(0, s.find(delimiter));
884  s.erase(0, s.find(delimiter) + delimiter.length());
885  m_keylayer2["det"].insert(static_cast<int>(m_det2tech[det]));
886  m_keylayer2["bec"].insert(static_cast<int>(m_bec2zone[bec]));
887  m_keylayer2["lyr"].insert(std::stoi(lyr));
888  ATH_MSG_INFO("Using key layer (2D): " << m_keystring2.value());
889  } catch (...){
890  ATH_MSG_ERROR("Invalid KeyString2: '" << m_keystring2.value() << "'." << "Accepted formats are 'strip,posEndcap,2', 'pixel,barrel,3', or 'plane 0'");
891  }
892  }
893  else // keylayer format is 'plane 0'
894  {
895  std::string delimiter = " ";
896  try {
897  s.erase(0, s.find(delimiter) + delimiter.length());
898  std::string plane = s.substr(0, s.find(delimiter));
899  std::vector<std::string> s = (m_planes)->at(std::stoi(plane));
900  for (unsigned i = 0; i < s.size(); i++){
901  std::string reg = s[i].substr(0, 2);
902  std::vector<std::string> zone = abrevs[reg];
903  if (s[i].back() == '+') zone[1] = "posEndcap";
904  if (s[i].back() == '-') zone[1] = "negEndcap";
905  s[i].erase(std::remove(s[i].begin(), s[i].end(), '+'), s[i].end());
906  s[i].erase(std::remove(s[i].begin(), s[i].end(), '-'), s[i].end());
907  std::string lyr = s[i].substr(2);
908  m_keylayer2["det"].insert(static_cast<int>(m_det2tech[zone[0]]));
909  m_keylayer2["bec"].insert(static_cast<int>(m_bec2zone[zone[1]]));
910  m_keylayer2["lyr"].insert(std::stoi(lyr));
911  }
912  ATH_MSG_INFO("Using key layer (2D) (in plane X format): " << m_keystring2.value());
913  } catch (...){
914  ATH_MSG_ERROR("Invalid KeyString2: '" << m_keystring2.value() << "'." << "Accepted formats are 'strip,posEndcap,2', 'pixel,barrel,3', or 'plane 0'");
915  }
916  }
917  }
918 }

◆ readInputs()

StatusCode FPGATrackSimMapMakerAlg::readInputs ( bool &  done)
private

Definition at line 96 of file FPGATrackSimMapMakerAlg.cxx.

97 {
98  // Read primary input
99  if ( !m_hitSGInputTool.empty()) {
100  ATH_CHECK(m_hitSGInputTool->readData(&m_eventHeader, Gaudi::Hive::currentContext()));
101  ATH_MSG_DEBUG("Loaded " << m_eventHeader.nHits() << " hits in event header from SG");
102  }
103  else {
104  ATH_CHECK(m_hitInputTool->readData(&m_eventHeader, done));
105  if (done)
106  {
107  ATH_MSG_INFO("Cannot read more events from file, returning");
108  return StatusCode::SUCCESS; // end of loop over events
109  }
110  }
111 
112  // Ask the event selection service if this event really falls within the region.
113  if (!m_evtSel->selectEvent(&m_eventHeader))
114  {
115  ATH_MSG_DEBUG("Event skipped by: " << m_evtSel->name());
116  return StatusCode::SUCCESS;
117  }
118 
120  ATH_MSG_DEBUG ("Getting Event " << eventinfo);
121 
122  for (auto hit: m_eventHeader.hits()) // fill track to modules map and hit vectors
123  {
124  // barcode cut: these hits are not associated with our single muon tracks
125  if (hit.getBarcodePt() == 0) continue;
126 
127  SiliconTech det = hit.getDetType();
128  DetectorZone bec = hit.getDetectorZone();
129  int lyr = hit.getPhysLayer();
130  int eta = hit.getEtaModule();
131  int phi = hit.getPhiModule();
132 
133  if (hit.isPixel() && hit.isBarrel()) {
134  m_pbHits.push_back(hit);
135  if (lyr > m_pbmax) m_pbmax = lyr;
136  }
137  else if (hit.isPixel() && !hit.isBarrel()) {
138  // Perform the layer + module number remapping using our tool.
139  m_moduleRelabel->remap(hit);
140  eta = hit.getEtaModule();
141  lyr = hit.getPhysLayer();
142 
143  m_peHits.push_back(hit);
144  if (bec == DetectorZone::posEndcap && lyr > m_pemax[0]) m_pemax[0] = lyr;
145  if (bec == DetectorZone::negEndcap && lyr > m_pemax[1]) m_pemax[1] = lyr;
146  }
147  else if (!hit.isPixel() && hit.isBarrel()) {
148  m_sbHits.push_back(hit);
149  if (lyr > m_sbmax) m_sbmax = lyr;
150  }
151  else if (!hit.isPixel() && !hit.isBarrel()) {
152  m_seHits.push_back(hit);
153  if (bec == DetectorZone::posEndcap && lyr > m_semax[0]) m_semax[0] = lyr;
154  if (bec == DetectorZone::negEndcap && lyr > m_semax[1]) m_semax[1] = lyr;
155  }
156  else ATH_MSG_ERROR("Invalid Region");
157 
158  // keep track of all etamods on the key layer for slicing
159  if (isOnKeyLayer(1,det,bec,lyr)) {
160  if (m_key_etamods.count(eta) == 0) {
161  m_key_etamods.insert(std::pair<int, int>(eta, 1));
162  } else {
163  m_key_etamods[eta] += 1;
164  }
165  }
166 
167  if (m_key2) // if doing 2D slicing
168  if (isOnKeyLayer(2,det,bec,lyr)) m_key_etamods2.insert(eta);
169 
170  // Keep a global record of all modules as we see them, indexed by the ID tuple.
171  Module mod = Module(det, bec, lyr, eta, phi);
172  if (m_modules.count(mod.moduleId()) == 0) {
173  m_modules.insert(std::pair<FPGATrackSimModuleId, Module>(mod.moduleId(), mod));
174  }
175  Module* modref = &(m_modules[mod.moduleId()]);
176 
177  if (std::find(m_track2modules[hit.getEventIndex()].begin(), m_track2modules[hit.getEventIndex()].end(), modref) == m_track2modules[hit.getEventIndex()].end())
178  m_track2modules[hit.getEventIndex()].push_back(modref);
179  m_allHits.push_back(hit);
180  }
181 
182  return StatusCode::SUCCESS;
183 }

◆ renounce()

std::enable_if_t<std::is_void_v<std::result_of_t<decltype(&T::renounce)(T)> > && !std::is_base_of_v<SG::VarHandleKeyArray, T> && std::is_base_of_v<Gaudi::DataHandle, T>, void> AthCommonDataStore< AthCommonMsg< Algorithm > >::renounce ( T &  h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381  {
382  h.renounce();
383  PBASE::renounce (h);
384  }

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::renounceArray ( SG::VarHandleKeyArray handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ sysInitialize()

StatusCode AthAlgorithm::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Algorithm > >.

Reimplemented in AthAnalysisAlgorithm, AthFilterAlgorithm, PyAthena::Alg, and AthHistogramAlgorithm.

Definition at line 66 of file AthAlgorithm.cxx.

66  {
68 
69  if (sc.isFailure()) {
70  return sc;
71  }
72  ServiceHandle<ICondSvc> cs("CondSvc",name());
73  for (auto h : outputHandles()) {
74  if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
75  // do this inside the loop so we don't create the CondSvc until needed
76  if ( cs.retrieve().isFailure() ) {
77  ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
78  return StatusCode::SUCCESS;
79  }
80  if (cs->regHandle(this,*h).isFailure()) {
81  sc = StatusCode::FAILURE;
82  ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
83  << " with CondSvc");
84  }
85  }
86  }
87  return sc;
88 }

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::updateVHKA ( Gaudi::Details::PropertyBase &  )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308  {
309  // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310  // << " size: " << m_vhka.size() << endmsg;
311  for (auto &a : m_vhka) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

◆ writeEtaPatterns()

StatusCode FPGATrackSimMapMakerAlg::writeEtaPatterns ( )
private

Definition at line 515 of file FPGATrackSimMapMakerAlg.cxx.

516 {
517  std::stringstream trim;
518  std::stringstream gtrim;
519  trim << std::fixed << std::setprecision(3) << m_trim;
520  gtrim << std::fixed << std::setprecision(3) << m_globalTrim;
521  std::string str_trim = trim.str();
522  std::string str_gtrim = gtrim.str();
523  int dot = str_trim.find_last_of(".");
524  str_trim.replace(dot,1,"p");
525  str_gtrim.replace(str_gtrim.find_last_of("."), 1, "p");
526 
527  std::string slicingType = "";
528  if (m_key2) slicingType = "2D";
529 
530  std::string etapat_path = m_outFileName.value() + "region" + std::to_string(m_region) + ".patt";
531 
532  ATH_MSG_INFO("Creating eta patterns file: " << etapat_path);
533  m_etapat.open(etapat_path, std::ofstream::out);
534 
535  // assign logical layer to each module
536  for (auto& pair: m_track2modules) {
537  for (auto& m: pair.second)
538  {
539  if (m->det == SiliconTech::pixel && m->bec == DetectorZone::barrel) m->plane = findPlane(m_planes, "pb" + std::to_string(m->lyr));
540  if (m->det == SiliconTech::pixel && m->bec == DetectorZone::posEndcap) m->plane = findPlane(m_planes, "pe" + std::to_string(m->lyr) + "+");
541  if (m->det == SiliconTech::pixel && m->bec == DetectorZone::negEndcap) m->plane = findPlane(m_planes, "pe" + std::to_string(m->lyr) + "-");
542 
543  if (m->det == SiliconTech::strip && m->bec == DetectorZone::barrel) m->plane = findPlane(m_planes, "sb" + std::to_string(m->lyr));
544  if (m->det == SiliconTech::strip && m->bec == DetectorZone::posEndcap) m->plane = findPlane(m_planes, "se" + std::to_string(m->lyr) + "+");
545  if (m->det == SiliconTech::strip && m->bec == DetectorZone::negEndcap) m->plane = findPlane(m_planes, "se" + std::to_string(m->lyr) + "-");
546  }
547  }
548 
549  for(auto trk: m_usedTracks)
550  {
551  std::stringstream track_etapatts;
552  unsigned planesDone = 0;
553  for (unsigned p = 0; p < (m_planes)->size(); p++)
554  {
555  for (const Module* m : m_track2modules[trk]) {
556  if (m->plane == static_cast<int>(p))
557  {
558  track_etapatts << std::to_string(static_cast<int>(m->det)) << "\t" << std::to_string(static_cast<int>(m->bec)) << "\t" << std::to_string(m->eta) << "\t\t";
559  planesDone++;
560  break;
561  }
562  }
563  }
564  if (planesDone == (m_planes)->size())
565  m_etapat << track_etapatts.str() << "\n";
566 
567  }
568  m_etapat.close();
569  return StatusCode::SUCCESS;
570 }

◆ writeMedianZFile()

StatusCode FPGATrackSimMapMakerAlg::writeMedianZFile ( std::vector< FPGATrackSimHit > const allHits)
private

Definition at line 642 of file FPGATrackSimMapMakerAlg.cxx.

643 {
644  // calculate median z. We do this globally and slice-by-slice.
645  m_z.resize(m_nSlices.value(), std::vector<std::vector<float>>((m_planes2)->size(),std::vector<float>(0)));
646  for (const auto& hit: allHits)
647  {
648  SiliconTech det = hit.getDetType();
649  DetectorZone bec = hit.getDetectorZone();
650  int lyr = hit.getPhysLayer();
651  int slice = m_track2slice[hit.getEventIndex()];
652  int plane = -1;
654  if (det == SiliconTech::pixel && bec == DetectorZone::posEndcap) plane = findPlane(m_planes2, "pe" + std::to_string(lyr) + "+");
655  if (det == SiliconTech::pixel && bec == DetectorZone::negEndcap) plane = findPlane(m_planes2, "pe" + std::to_string(lyr) + "-");
657  if (det == SiliconTech::strip && bec == DetectorZone::posEndcap) plane = findPlane(m_planes2, "se" + std::to_string(lyr) + "+");
658  if (det == SiliconTech::strip && bec == DetectorZone::negEndcap) plane = findPlane(m_planes2, "se" + std::to_string(lyr) + "-");
659 
660  if (plane != -1) {
661  m_z[slice][plane].push_back(hit.getZ());
662  }
663  }
664 
665  // print file
666  std::string zed_path = m_outFileName.value() + "region" + std::to_string(m_region) + "_z.txt";
667 
668  ATH_MSG_INFO("Creating median z file: " << zed_path);
669  m_zedfile.open(zed_path, std::ofstream::out);
670  for (int s = 0; s < m_nSlices.value(); s++){
671  m_zedfile << std::to_string(s) << " ";
672  for (unsigned p = 0; p < (m_planes2)->size(); p++){
673  if (m_z[s][p].size() != 0){
674  float minZ = *std::min_element(m_z[s][p].begin(), m_z[s][p].end());
675  float maxZ = *std::max_element(m_z[s][p].begin(), m_z[s][p].end());
676  float median = (minZ + maxZ)/2;
677  m_zedfile << std::setprecision(3) << std::fixed << median << " ";
678  } else {
679  int median = -1;
680  m_zedfile << median << " ";
681  }
682  }
683  m_zedfile << std::endl;
684  }
685 
686  // Now do this globally. Note: should this be meanZ instead of medianZ in the forward region?
687  m_zedfile << -1 << " ";
688  for (unsigned p = 0; p < (m_planes2)->size(); p++) {
689  float minZ = 0;
690  float maxZ = 0;
691  bool doneInitial = false;
692  for (int s = 0; s < m_nSlices.value(); s++) {
693  if (m_z[s][p].size() != 0) {
694  float newMinZ = *std::min_element(m_z[s][p].begin(), m_z[s][p].end());
695  float newMaxZ = *std::max_element(m_z[s][p].begin(), m_z[s][p].end());
696  // slightly clunky, but z can be positive and negative so there's not a sane initial/placeholder value.
697  if (doneInitial) {
698  minZ = std::min(minZ, newMinZ);
699  maxZ = std::max(maxZ, newMaxZ);
700  } else {
701  minZ = newMinZ;
702  maxZ = newMaxZ;
703  doneInitial = true;
704  }
705  }
706  }
707  if (doneInitial) {
708  float median = (minZ + maxZ)/2;
709  m_zedfile << std::setprecision(3) << std::fixed << median << " ";
710  } else {
711  int median = -1;
712  m_zedfile << median << " ";
713  }
714  }
715  m_zedfile << std::endl;
716 
717  m_zedfile.close();
718 
719  return StatusCode::SUCCESS;
720 }

◆ writePmapAndRmap()

StatusCode FPGATrackSimMapMakerAlg::writePmapAndRmap ( std::vector< FPGATrackSimHit > const pbHits,
std::vector< FPGATrackSimHit > const peHits,
std::vector< FPGATrackSimHit > const sbHits,
std::vector< FPGATrackSimHit > const seHits,
int  region 
)
private

Definition at line 191 of file FPGATrackSimMapMakerAlg.cxx.

192 {
193  // Plane Map
194 
195  // to avoid vector _M_range_check errors, print at least one line for each DetectorZone
196  if (m_pbmax == -1) m_pbmax = 0;
197  if (m_sbmax == -1) m_sbmax = 0;
198  if (m_pemax[0] == -1) m_pemax[0] = 0;
199  if (m_pemax[1] == -1) m_pemax[1] = 0;
200  if (m_semax[0] == -1) m_semax[0] = 0;
201  if (m_semax[1] == -1) m_semax[1] = 0;
202 
203  std::string pmap_path = m_outFileName.value() + "region" + std::to_string(m_region) + ".pmap";
204  ATH_MSG_INFO("Creating pmap: " << pmap_path);
205  m_pmap.open(pmap_path, std::ofstream::out);
206 
207  m_pmap << m_geoTag.value() << "\n" << m_planes->size() << " logical_s1\n" << m_planes2->size() << " logical_s2\n";
208  m_pmap << m_pbmax+1 << " pixel barrel \n" << m_pemax[0]+1 << " pixel endcap+ \n" << m_pemax[1]+1 << " pixel endcap- \n";
209  m_pmap << m_sbmax+1 << " SCT barrel \n" << m_semax[0]+1 << " SCT endcap+\n" << m_semax[1]+1 << " SCT endcap-\n";
210  m_pmap << "! silicon endCap physDisk physLayer ['stereo' stripSide <strip only>] 'plane1' logiLayer1 'plane2' logiLayer2\n";
211  m_pmap << "\nregion " << reg << "\n";
212 
213  int p1,p2;
214  for (int lyr = 0; lyr <= m_pbmax; lyr++) { // Pixel Barrel
215  p1 = findPlane(m_planes, "pb" + std::to_string(lyr));
216  p2 = findPlane(m_planes2, "pb" + std::to_string(lyr));
217  m_pmap << "pixel 0 -1 " << lyr << " plane1 " << p1 << " plane2 " << p2 << "\n";
218  }
219  for (int lyr = 0; lyr <= m_pemax[0]; lyr++) { // Pixel Postive Endap
220  p1 = findPlane(m_planes, "pe" + std::to_string(lyr) + "+");
221  p2 = findPlane(m_planes2, "pe" + std::to_string(lyr) + "+");
222  m_pmap << "pixel 1 " << lyr << " " << lyr << " plane1 " << p1 << " plane2 " << p2 << "\n";
223  }
224  for (int lyr = 0; lyr <= m_pemax[1]; lyr++) { // Pixel Negative Endcap
225  p1 = findPlane(m_planes, "pe" + std::to_string(lyr) + "-");
226  p2 = findPlane(m_planes2, "pe" + std::to_string(lyr) + "-");
227  m_pmap << "pixel 2 " << lyr << " " << lyr << " plane1 " << p1 << " plane2 " << p2 << "\n";
228  }
229  for (int lyr = 0; lyr <= m_sbmax; lyr++) { // Strip Barrel
230  p1 = findPlane(m_planes, "sb" + std::to_string(lyr));
231  p2 = findPlane(m_planes2, "sb" + std::to_string(lyr));
232  m_pmap << "SCT 0 -1 " << lyr << " stereo " << lyr % 2 << " plane1 " << p1 << " plane2 " << p2 << "\n";
233  }
234  for (int lyr = 0; lyr <= m_semax[0]; lyr++) { // Strip Positive Endcap
235  p1 = findPlane(m_planes, "se" + std::to_string(lyr) + "+");
236  p2 = findPlane(m_planes2, "se" + std::to_string(lyr) + "+");
237  m_pmap << "SCT 1 " << lyr/2 << " " << lyr << " stereo " << lyr % 2 << " plane1 " << p1 << " plane2 " << p2 << "\n";
238  }
239  for (int lyr = 0; lyr <= m_semax[1]; lyr++) { // Strip Negative Endcap
240  p1 = findPlane(m_planes, "se" + std::to_string(lyr) + "-");
241  p2 = findPlane(m_planes2, "se" + std::to_string(lyr) + "-");
242  m_pmap << "SCT 2 " << lyr/2 << " " << lyr << " stereo " << lyr % 2 << " plane1 " << p1 << " plane2 " << p2 << "\n";
243  }
244 
245  // Region Map
246  std::string rmap_path = m_outFileName.value() + "region" + std::to_string(m_region) + ".rmap";
247  ATH_MSG_INFO("Creating rmap: " << rmap_path);
248  m_rmap.open(rmap_path, std::ofstream::out);
249  m_rmap << "towers 1 phi 16\n\n0\n";
250 
254 
258 
259  m_pmap.close();
260  m_rmap.close();
261 
262  // Step 1: Read the entire contents of the file
263  std::ifstream inputFile(pmap_path);
264  if (!inputFile) {
265  ATH_MSG_ERROR("Error: Unable to open file for reading: " << pmap_path);
266  return StatusCode::FAILURE;
267  }
268 
269  std::ostringstream buffer;
270  buffer << inputFile.rdbuf(); // Reading the entire file into the stringstream
271  std::string fileContent = buffer.str();
272  inputFile.close();
273 
274  // Step 2: Concatenate the content n times
275  std::string newContent;
276  for (int i = 0; i < m_nSlices; ++i) {
277  newContent += fileContent;
278  newContent += '\n';
279  }
280 
281  // Step 3: Write the new content back to the same file
282  std::ofstream outputFile(pmap_path);
283  if (!outputFile) {
284  ATH_MSG_ERROR("Error: Unable to open file for writing: " << pmap_path);
285  return StatusCode::FAILURE;
286  }
287 
288  outputFile << newContent;
289  outputFile.close();
290 
291  return StatusCode::SUCCESS;
292 }

◆ writeRadiiFile()

StatusCode FPGATrackSimMapMakerAlg::writeRadiiFile ( std::vector< FPGATrackSimHit > const allHits)
private

Definition at line 572 of file FPGATrackSimMapMakerAlg.cxx.

573 {
574  // calculate mean radii.
575  m_radii.resize(m_nSlices.value(), std::vector<std::vector<float>>(m_planes2->size(),std::vector<float>(0)));
576  for (const auto& hit: allHits)
577  {
578  SiliconTech det = hit.getDetType();
579  DetectorZone bec = hit.getDetectorZone();
580  int lyr = hit.getPhysLayer();
581  int slice = m_track2slice[hit.getEventIndex()];
582  int plane = -1;
584  if (det == SiliconTech::pixel && bec == DetectorZone::posEndcap) plane = findPlane(m_planes2, "pe" + std::to_string(lyr) + "+");
585  if (det == SiliconTech::pixel && bec == DetectorZone::negEndcap) plane = findPlane(m_planes2, "pe" + std::to_string(lyr) + "-");
587  if (det == SiliconTech::strip && bec == DetectorZone::posEndcap) plane = findPlane(m_planes2, "se" + std::to_string(lyr) + "+");
588  if (det == SiliconTech::strip && bec == DetectorZone::negEndcap) plane = findPlane(m_planes2, "se" + std::to_string(lyr) + "-");
589 
590  if (plane != -1) {
591  m_radii[slice][plane].push_back(hit.getR());
592  }
593  }
594 
595  // print file
596  std::string radii_path = m_outFileName.value() + "region" + std::to_string(m_region) + "_radii.txt";
597 
598  ATH_MSG_INFO("Creating radii file: " << radii_path);
599  m_radfile.open(radii_path, std::ofstream::out);
600  for (int s = 0; s < m_nSlices.value(); s++){
601  m_radfile << std::to_string(s) << " ";
602  for (unsigned p = 0; p < (m_planes2)->size(); p++){
603  if (m_radii[s][p].size() != 0){
604  // "If left to type inference, op operates on values of the same type as
605  // init which can result in unwanted casting of the iterator elements."
606  // https://en.cppreference.com/w/cpp/algorithm/accumulate
607  float avg = std::accumulate(m_radii[s][p].begin(), m_radii[s][p].end(), 0.0f) / float(m_radii[s][p].size());
608  m_radfile << std::setprecision(3) << std::fixed << avg << " ";
609  } else {
610  int avg = -1;
611  m_radfile << avg << " ";
612  }
613  }
614  m_radfile << "\n";
615  }
616 
617  // Calculate global mean radii by reversing the order of the above two loops.
618  m_radfile << -1 << " ";
619  for (unsigned p = 0; p < (m_planes2)->size(); p++) {
620  float avg = 0;
621  int count = 0;
622  for (int s = 0; s < m_nSlices.value(); s++) {
623  if (m_radii[s][p].size() != 0) {
625  count += m_radii[s][p].size();
626  }
627  }
628  if (count > 0) {
629  avg /= float(count);
630  m_radfile << std::setprecision(3) << std::fixed << avg << " ";
631  } else {
632  m_radfile << -1 << " ";
633  }
634  }
635  m_radfile << std::endl;
636 
637  m_radfile.close();
638 
639  return StatusCode::SUCCESS;
640 }

◆ writeSubrmap()

StatusCode FPGATrackSimMapMakerAlg::writeSubrmap ( std::vector< FPGATrackSimHit > const allHits)
private

Definition at line 294 of file FPGATrackSimMapMakerAlg.cxx.

295 {
296  /* ---------- Create z-slices ---------- */
297 
298  // BEFORE DOING ANYTHING ELSE, apply global trimming to m_key_etamods.
299  std::set<int> key_etamods;
300  // First, sum up the total number of hits in the key layer. There should be a one-liner for this...
301  float total_hits = 0;
302  for (auto const &etamod : m_key_etamods) {
303  total_hits += etamod.second;
304  }
305  ATH_MSG_INFO("Found " << total_hits << " hits in the key layer, applying global trim factor of " << m_globalTrim << "%");
306 
307  // Then, do the trim.
308  for (auto const &etamod : m_key_etamods) {
309  if (m_globalTrim == 0 || ((etamod.second / total_hits) >= m_globalTrim*0.01)) {
310  key_etamods.insert(etamod.first);
311  } else {
312  ATH_MSG_INFO("Eta module " << etamod.first << " only contains " << etamod.second << " out of " << total_hits << " hits, excluding from slices.");
313  }
314  }
315 
316  if (m_nSlices.value() == -1) m_nSlices.value() = key_etamods.size(); //default is full granularity slicing
317  float etasPerSlice = float(key_etamods.size())/m_nSlices.value();
318  std::vector<std::vector<int>> key_modules_for_slices; // indexed by slice, holds module eta values
319 
320  // easier to use vector than set, convert m_key_etamods into key_etas
321  std::vector<int> key_etas;
322  std::vector<int> key_etas2; // used if 2D slicing
323  key_etas.insert(key_etas.end(), key_etamods.begin(), key_etamods.end());
324 
325  for (unsigned i = 0; i < key_etas.size(); i++)
326  {
327  if (i >= (key_modules_for_slices.size() * etasPerSlice)) key_modules_for_slices.push_back(std::vector<int>());
328  key_modules_for_slices.back().push_back(key_etas[i]);
329  }
330 
331  std::map<int, int> keymod2slice;
332  for (unsigned s = 0; s < key_modules_for_slices.size(); s++)
333  for (unsigned e = 0; e < key_modules_for_slices[s].size(); e++)
334  keymod2slice[key_modules_for_slices[s][e]] = s;
335 
336  std::string key = m_keystring.value();
337  key.erase(std::remove(key.begin(), key.end(), ','), key.end());
338  key.erase(std::remove(key.begin(), key.end(), ' '), key.end());
339  std::string key2 = m_keystring2.value();
340  key2.erase(std::remove(key2.begin(), key2.end(), ','), key2.end());
341  key2.erase(std::remove(key2.begin(), key2.end(), ' '), key2.end());
342 
343  ATH_MSG_INFO("Doing z-slicing");
344  if (key_etamods.size() == 0) ATH_MSG_ERROR("Found 0 slices using the keystring: '" << m_keystring << "'");
345  ATH_MSG_INFO("Nslices = " << std::to_string(m_nSlices.value()) << ":");
346 
347  std::stringstream eta_slices;
348  for (unsigned s = 0; s < key_modules_for_slices.size(); s++){
349  for (unsigned e = 0; e < key_modules_for_slices[s].size(); e++){
350  eta_slices << key_modules_for_slices[s][e] << " ";
351  }
352  eta_slices << ", ";
353  }
354  ATH_MSG_INFO(eta_slices.str());
355 
356  // 2D key layer slicing
357  if (m_key2)
358  { // make new slices from combinations of keylayer1 slices and keylayer2 slices
359 
360  /*------------- setup keylayer2 keymodule to slice map -------------- */
361  std::vector<std::vector<int>> key_modules_for_slices2;
362  float etasPerSlice2 = float(m_key_etamods2.size())/m_nSlices.value();
363  key_etas2.insert(key_etas2.end(), m_key_etamods2.begin(), m_key_etamods2.end());
364  for (unsigned i = 0; i < key_etas2.size(); i++)
365  {
366  if (i >= (key_modules_for_slices2.size() * etasPerSlice2)) key_modules_for_slices2.push_back(std::vector<int>());
367  key_modules_for_slices2.back().push_back(key_etas2[i]);
368  }
369 
370  std::map<int, int> keymod2slice2;
371  for (unsigned s = 0; s < key_modules_for_slices2.size(); s++)
372  for (unsigned e = 0; e < key_modules_for_slices2[s].size(); e++)
373  keymod2slice2[key_modules_for_slices2[s][e]] = s;
374  /*----------------------------------------------------------------- */
375 
376  int new_nSlice = m_nSlices.value();
377  for (int s1 = 0; s1 < m_nSlices.value(); s1++){ // loop over keylayer1's slices
378  for (int s2 = 0; s2 < m_nSlices.value(); s2++){ // loop over keylayer2's slices
379 
380  for (auto& pair: m_track2modules) // track loop
381  {
382  if (m_usedTracks.find(pair.first) != m_usedTracks.end()) continue; // skip if already assigned a slice to this track
383  bool key1 = false;
384  bool key2 = false;
385  for (auto& m: pair.second) // module loop
386  {
387  if (isOnKeyLayer(1,m->det,m->bec,m->lyr))
388  if (keymod2slice[m->eta] == s1) key1 = true;
389 
390  if (isOnKeyLayer(2,m->det,m->bec,m->lyr))
391  if (keymod2slice2[m->eta] == s2) key2 = true;
392  }
393 
394  if (key1 && key2)
395  {
396  int newSlice = m_nSlices.value()*s1 + s2;
397  m_track2slice[pair.first] = newSlice;
398  m_usedTracks.insert(pair.first);
399  if (newSlice + 1 > new_nSlice) new_nSlice = newSlice + 1; // find max slice, to set new total number of slices
400  }
401  }
402  }
403  }
404  m_nSlices.value() = new_nSlice;
405  ATH_MSG_INFO("These slices were further divided based on the key layer 2: '" << key2 << "'. Now nSlices = " << m_nSlices.value());
406  ATH_MSG_INFO("Using " << m_usedTracks.size() << " tracks out of " << m_maxEvents << ". The rest were missing a hit in one or both of the key layers");
407  }
408 
409 
410  // 1D key layer slicing
411  else
412  {
413  for (const FPGATrackSimHit& hit: allHits) // Fill the track to slice map
414  {
415  if (m_usedTracks.find(hit.getEventIndex()) != m_usedTracks.end()) continue; // skip if already done a hit from this track
416  if (isOnKeyLayer(1,hit.getDetType(),hit.getDetectorZone(), hit.getPhysLayer()))
417  { // if hit is in key layer, add it's barcode to the map
418  if (keymod2slice.count(hit.getEtaModule()) > 0) {
419  int s = keymod2slice[hit.getEtaModule()];
420  m_track2slice[hit.getEventIndex()] = s;
421  m_usedTracks.insert(hit.getEventIndex());
422  }
423  }
424  }
425  ATH_MSG_INFO("Using " << m_usedTracks.size() << " tracks out of " << m_maxEvents << ". The rest missed the key layer");
426  }
427 
428  std::stringstream trim;
429  std::stringstream gtrim;
430  trim << std::fixed << std::setprecision(3) << m_trim;
431  gtrim << std::fixed << std::setprecision(3) << m_globalTrim;
432  std::string str_trim = trim.str();
433  std::string str_gtrim = gtrim.str();
434  int dot = str_trim.find_last_of(".");
435  str_trim.replace(dot,1,"p");
436  str_gtrim.replace(str_gtrim.find_last_of("."), 1, "p");
437 
438  std::string subrmap_path = m_outFileName.value() + "region" + std::to_string(m_region) + ".subrmap";
439 
440  ATH_MSG_INFO("Creating subrmap: " << subrmap_path);
441  m_subrmap.open(subrmap_path, std::ofstream::out);
442  m_subrmap << "towers " << m_nSlices.value() << " phi 16\n\n";
443 
444  // Resize numTracks vector to be equal to the number of slices
445  // Now that this just stores module pointers we could loop over m_modules instead.
446  for (auto& pair: m_track2modules) {
447  for (Module* m: pair.second) {
448  if (m->numTracks.empty()) {
449  m->numTracks.resize(m_nSlices.value(), 0);
450  }
451  }
452  }
453 
454 
455  // Count tracks per slice
456  ATH_MSG_INFO("Counting number of tracks per slice.");
457  std::vector<std::vector<int>> slicedTracks (m_nSlices.value()); // vector of tracks, indexed by slice
458  for (auto trk: m_usedTracks) {
459  int s = m_track2slice[trk];
460  slicedTracks[s].push_back(trk);
461  std::vector<Module*> mods = m_track2modules[trk];
462  for (Module* mod: mods) {
463  mod->numTracks[s]++;
464  }
465  }
466 
467  if (m_drawSlices)
468  drawSlices(allHits);
469 
470  // Now do trimming and Fill slice2module map
471  int trimmed = 0;
472  for (int s = 0; s < m_nSlices.value(); s++) {
473  ATH_MSG_INFO("Applying local trimming in slice " << s);
474  for (auto trk : slicedTracks[s]) {
475  auto it = std::remove_if (m_track2modules[trk].begin(),
476  m_track2modules[trk].end(),
477  [&] (const Module* m) {
478  return 100 * ( float(m->numTracks[s]) / float(slicedTracks[s].size()) ) < m_trim;
479  });
480  trimmed += m_track2modules[trk].end() - it;
481  m_track2modules[trk].erase (it, m_track2modules[trk].end());
482 
483  ATH_MSG_DEBUG("About to query trk2slice");
484  int s = m_track2slice[trk];
485  ATH_MSG_DEBUG("Queried trk2slice.");
486  // add all modules from track to slices
487  if (m_track2modules[trk].size() > 0) {
488  ATH_MSG_DEBUG("About to insert trk2modules");
490  ATH_MSG_DEBUG("Inserted trk2modules.");
491  }
492  }
493  }
494  ATH_MSG_INFO("Trimmed off " << trimmed << " modules that were hit by less than " << m_trim << "% of tracks");
495 
496  /* ---------- Print z-slice map ---------- */
497 
498  for (int s = 0; s < m_nSlices.value(); s++)
499  {
500  m_subrmap << s << "\n";
504 
508  m_subrmap << "\n\n";
509  }
510 
511  m_subrmap.close();
512  return StatusCode::SUCCESS;
513 }

Member Data Documentation

◆ m_allHits

std::vector<FPGATrackSimHit> FPGATrackSimMapMakerAlg::m_allHits
private

Definition at line 104 of file FPGATrackSimMapMakerAlg.h.

◆ m_bec2zone

std::map<std::string, DetectorZone> FPGATrackSimMapMakerAlg::m_bec2zone = { {"barrel",DetectorZone::barrel}, {"posEndcap",DetectorZone::posEndcap}, {"negEndcap",DetectorZone::negEndcap} }
private

Definition at line 186 of file FPGATrackSimMapMakerAlg.h.

◆ m_description

Gaudi::Property<std::string> FPGATrackSimMapMakerAlg::m_description {this, "description", "", "tag description"}
private

Definition at line 90 of file FPGATrackSimMapMakerAlg.h.

◆ m_det2tech

std::map<std::string, SiliconTech> FPGATrackSimMapMakerAlg::m_det2tech = { {"pixel",SiliconTech::pixel}, {"strip",SiliconTech::strip} }
private

Definition at line 185 of file FPGATrackSimMapMakerAlg.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_diskIndex

const std::vector<uint32_t> FPGATrackSimMapMakerAlg::m_diskIndex = {0,17,47,58,66}
private

Definition at line 174 of file FPGATrackSimMapMakerAlg.h.

◆ m_drawSlices

Gaudi::Property<bool> FPGATrackSimMapMakerAlg::m_drawSlices {this, "drawSlices", false, "Draw the huge 2D slice histograms"}
private

Definition at line 93 of file FPGATrackSimMapMakerAlg.h.

◆ m_etapat

std::ofstream FPGATrackSimMapMakerAlg::m_etapat
private

Definition at line 169 of file FPGATrackSimMapMakerAlg.h.

◆ m_eventHeader

FPGATrackSimEventInputHeader FPGATrackSimMapMakerAlg::m_eventHeader
private

Definition at line 52 of file FPGATrackSimMapMakerAlg.h.

◆ m_evtSel

ServiceHandle<IFPGATrackSimEventSelectionSvc> FPGATrackSimMapMakerAlg::m_evtSel {this, "eventSelector", "", "Event selection Svc"}
private

Definition at line 50 of file FPGATrackSimMapMakerAlg.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthAlgorithm::m_extendedExtraObjects
privateinherited

Definition at line 79 of file AthAlgorithm.h.

◆ m_geoTag

Gaudi::Property<std::string> FPGATrackSimMapMakerAlg::m_geoTag {this, "GeometryVersion", "ATLAS-P2-ITK-22-02-00", "Geometry tag that this set of maps is for. TODO can we store/read from wrappers?"}
private

Definition at line 91 of file FPGATrackSimMapMakerAlg.h.

◆ m_globalTrim

Gaudi::Property<float> FPGATrackSimMapMakerAlg::m_globalTrim {this, "globalTrim", 0.1, "Trimming applied globally to the key layer before determining slice boundaries"}
private

Definition at line 89 of file FPGATrackSimMapMakerAlg.h.

◆ m_hitInputTool

ToolHandle<IFPGATrackSimEventInputHeaderTool> FPGATrackSimMapMakerAlg::m_hitInputTool { this, "InputTool", "FPGATrackSimSGToRawHitsTool/FPGATrackSimInputTool", "HitInput Tool" }
private

Definition at line 47 of file FPGATrackSimMapMakerAlg.h.

◆ m_hitSGInputTool

ToolHandle<IFPGATrackSimInputTool> FPGATrackSimMapMakerAlg::m_hitSGInputTool {this, "SGInputTool", "", "Input tool from SG"}
private

Definition at line 48 of file FPGATrackSimMapMakerAlg.h.

◆ m_key2

bool FPGATrackSimMapMakerAlg::m_key2 = false
private

Definition at line 162 of file FPGATrackSimMapMakerAlg.h.

◆ m_key_etamods

std::map<int, int> FPGATrackSimMapMakerAlg::m_key_etamods
private

Definition at line 163 of file FPGATrackSimMapMakerAlg.h.

◆ m_key_etamods2

std::set<int> FPGATrackSimMapMakerAlg::m_key_etamods2
private

Definition at line 164 of file FPGATrackSimMapMakerAlg.h.

◆ m_keylayer

std::map<std::string, std::set<int> > FPGATrackSimMapMakerAlg::m_keylayer
private

Definition at line 159 of file FPGATrackSimMapMakerAlg.h.

◆ m_keylayer2

std::map<std::string, std::set<int> > FPGATrackSimMapMakerAlg::m_keylayer2
private

Definition at line 160 of file FPGATrackSimMapMakerAlg.h.

◆ m_keystring

Gaudi::Property<std::string> FPGATrackSimMapMakerAlg::m_keystring {this, "KeyString", "strip,barrel,2", "key layer to use for subrmap"}
private

Definition at line 86 of file FPGATrackSimMapMakerAlg.h.

◆ m_keystring2

Gaudi::Property<std::string> FPGATrackSimMapMakerAlg::m_keystring2 {this, "KeyString2", "", "second key layer for 2D slicing"}
private

Definition at line 87 of file FPGATrackSimMapMakerAlg.h.

◆ m_maxEvents

Gaudi::Property<int> FPGATrackSimMapMakerAlg::m_maxEvents {this, "maxEvents", 10000, "Max Events"}
private

Definition at line 82 of file FPGATrackSimMapMakerAlg.h.

◆ m_moduleRelabel

FPGATrackSimModuleRelabel* FPGATrackSimMapMakerAlg::m_moduleRelabel = nullptr
private

Definition at line 96 of file FPGATrackSimMapMakerAlg.h.

◆ m_modules

std::map<FPGATrackSimModuleId, Module> FPGATrackSimMapMakerAlg::m_modules
private

Definition at line 99 of file FPGATrackSimMapMakerAlg.h.

◆ m_monitorFile

std::unique_ptr<TFile> FPGATrackSimMapMakerAlg::m_monitorFile {}
private

Definition at line 170 of file FPGATrackSimMapMakerAlg.h.

◆ m_nSlices

Gaudi::Property<int> FPGATrackSimMapMakerAlg::m_nSlices {this, "nSlices", -1, "default is full granularity/maximum number of slices possible"}
private

Definition at line 88 of file FPGATrackSimMapMakerAlg.h.

◆ m_outFileName

Gaudi::Property<std::string> FPGATrackSimMapMakerAlg::m_outFileName {this, "OutFileName", "", "naming convention for maps"}
private

Definition at line 85 of file FPGATrackSimMapMakerAlg.h.

◆ m_overridePlanes

Gaudi::Property<std::vector<std::vector<std::string> > > FPGATrackSimMapMakerAlg::m_overridePlanes {this, "planes", m_planes_generic, "Logical layer assignments" }
private

Definition at line 156 of file FPGATrackSimMapMakerAlg.h.

◆ m_overridePlanes2

Gaudi::Property<std::vector<std::vector<std::string> > > FPGATrackSimMapMakerAlg::m_overridePlanes2 {this, "planes2", m_planes2_generic, "Logical layer assignments" }
private

Definition at line 157 of file FPGATrackSimMapMakerAlg.h.

◆ m_pbHits

std::vector<FPGATrackSimHit> FPGATrackSimMapMakerAlg::m_pbHits
private

Definition at line 104 of file FPGATrackSimMapMakerAlg.h.

◆ m_pbmax

int FPGATrackSimMapMakerAlg::m_pbmax = -1
private

Definition at line 106 of file FPGATrackSimMapMakerAlg.h.

◆ m_peHits

std::vector<FPGATrackSimHit> FPGATrackSimMapMakerAlg::m_peHits
private

Definition at line 104 of file FPGATrackSimMapMakerAlg.h.

◆ m_pemax

std::vector<int> FPGATrackSimMapMakerAlg::m_pemax = {-1,-1}
private

Definition at line 108 of file FPGATrackSimMapMakerAlg.h.

◆ m_planes

const std::vector<std::vector<std::string> >* FPGATrackSimMapMakerAlg::m_planes {}
private

Definition at line 118 of file FPGATrackSimMapMakerAlg.h.

◆ m_planes2

const std::vector<std::vector<std::string> >* FPGATrackSimMapMakerAlg::m_planes2 {}
private

Definition at line 119 of file FPGATrackSimMapMakerAlg.h.

◆ m_planes2_generic

const std::vector<std::vector<std::string> > FPGATrackSimMapMakerAlg::m_planes2_generic
private
Initial value:
= {
{"pb0", "pe0+","pe1+","pe2+","pe3+","pe4+","pe5+", "pe6+", "pe7+", "pe8+", "pe9+","pe10+","pe11+", "pe12+", "pe13+", "pe14+", "pe15+", "pe16+", },
{"pb1", "pe19+", "pe23+", "pe25+", },
{"pb2", "pe31+", "pe32+", "pe33+", "pe34+", "pe35+", "pe36+", "pe37+", "pe38+", "pe39+", "pe40+",
"pe41+", "pe42+", "pe43+", "pe44+", "pe45+", "pe46+",
"pe47+", "pe48+", "pe49+", "pe50+", "pe51+", "pe52+", "pe53+", "pe54+", "pe55+", "pe56+", },
{"pb3", "pe57+","pe58+","pe59+", "pe60+", "pe61+", "pe62+", "pe63+", "pe64+", "pe65+", "pe66+","pe67+","pe68+","pe69+"},
{"pb4", "pe70+","pe71+","pe72+", "pe73+", "pe74+", "pe75+", "pe76+", "pe77+", "pe78+", "pe79+",
"pe80+","pe81+","pe82+", "pe83+", "pe84+", "pe85+", "pe86+", "pe87+", "pe88+", "pe89+",},
{"sb0", "se4+", "se0+"},
{"sb1", "se5+", "se1+"},
{"sb2", "se6+", "se2+"},
{"sb3", "se7+", "se3+"},
{"sb4", "se8+"},
{"sb5", "se9+"},
{"sb6", "se10+"},
{"sb7", "se11+"}
}

Definition at line 136 of file FPGATrackSimMapMakerAlg.h.

◆ m_planes_generic

const std::vector<std::vector<std::string> > FPGATrackSimMapMakerAlg::m_planes_generic
private
Initial value:
= {
{"pb0", "pe0+","pe1+","pe2+","pe3+","pe4+","pe5+", "pe6+", "pe7+", "pe8+", "pe9+","pe10+","pe11+", "pe12+", "pe13+", "pe14+", "pe15+", "pe16+", },
{"pb1", "pe19+", "pe23+", "pe25+", },
{"pb2", "pe31+", "pe32+", "pe33+", "pe34+", "pe35+", "pe36+", "pe37+", "pe38+", "pe39+", "pe40+",
"pe41+", "pe42+", "pe43+", "pe44+", "pe45+", "pe46+",
"pe47+", "pe48+", "pe49+", "pe50+", "pe51+", "pe52+", "pe53+", "pe54+", "pe55+", "pe56+", },
{"pb3", "pe57+","pe58+","pe59+", "pe60+", "pe61+", "pe62+", "pe63+", "pe64+", "pe65+", "pe66+","pe67+","pe68+","pe69+"},
{"pb4", "pe70+","pe71+","pe72+", "pe73+", "pe74+", "pe75+", "pe76+", "pe77+", "pe78+", "pe79+",
"pe80+","pe81+","pe82+", "pe83+", "pe84+", "pe85+", "pe86+", "pe87+", "pe88+", "pe89+",}
}

Definition at line 124 of file FPGATrackSimMapMakerAlg.h.

◆ m_pmap

std::ofstream FPGATrackSimMapMakerAlg::m_pmap
private

Definition at line 169 of file FPGATrackSimMapMakerAlg.h.

◆ m_radfile

std::ofstream FPGATrackSimMapMakerAlg::m_radfile
private

Definition at line 169 of file FPGATrackSimMapMakerAlg.h.

◆ m_radii

std::vector<std::vector < std::vector<float> > > FPGATrackSimMapMakerAlg::m_radii
private

Definition at line 166 of file FPGATrackSimMapMakerAlg.h.

◆ m_region

Gaudi::Property<int> FPGATrackSimMapMakerAlg::m_region {this, "region", 0, "Region"}
private

Definition at line 83 of file FPGATrackSimMapMakerAlg.h.

◆ m_remapModules

Gaudi::Property<bool> FPGATrackSimMapMakerAlg::m_remapModules {this, "remapModules", false, "Allow maps to be drawn that slice modules more finely, by remapping module indices"}
private

Definition at line 92 of file FPGATrackSimMapMakerAlg.h.

◆ m_rmap

std::ofstream FPGATrackSimMapMakerAlg::m_rmap
private

Definition at line 169 of file FPGATrackSimMapMakerAlg.h.

◆ m_sbHits

std::vector<FPGATrackSimHit> FPGATrackSimMapMakerAlg::m_sbHits
private

Definition at line 104 of file FPGATrackSimMapMakerAlg.h.

◆ m_sbmax

int FPGATrackSimMapMakerAlg::m_sbmax = -1
private

Definition at line 107 of file FPGATrackSimMapMakerAlg.h.

◆ m_seHits

std::vector<FPGATrackSimHit> FPGATrackSimMapMakerAlg::m_seHits
private

Definition at line 104 of file FPGATrackSimMapMakerAlg.h.

◆ m_semax

std::vector<int> FPGATrackSimMapMakerAlg::m_semax = {-1,-1}
private

Definition at line 109 of file FPGATrackSimMapMakerAlg.h.

◆ m_slice2modules

std::map<int, std::vector<Module*> > FPGATrackSimMapMakerAlg::m_slice2modules
private

Definition at line 100 of file FPGATrackSimMapMakerAlg.h.

◆ m_subrmap

std::ofstream FPGATrackSimMapMakerAlg::m_subrmap
private

Definition at line 169 of file FPGATrackSimMapMakerAlg.h.

◆ m_track2modules

std::map<int, std::vector<Module*> > FPGATrackSimMapMakerAlg::m_track2modules
private

Definition at line 100 of file FPGATrackSimMapMakerAlg.h.

◆ m_track2slice

std::map<int, int> FPGATrackSimMapMakerAlg::m_track2slice
private

Definition at line 101 of file FPGATrackSimMapMakerAlg.h.

◆ m_trim

Gaudi::Property<float> FPGATrackSimMapMakerAlg::m_trim {this, "trim", 0.1, "trim modules with less than given percent of tracks"}
private

Definition at line 84 of file FPGATrackSimMapMakerAlg.h.

◆ m_usedTracks

std::set<int> FPGATrackSimMapMakerAlg::m_usedTracks
private

Definition at line 165 of file FPGATrackSimMapMakerAlg.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< Algorithm > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.

◆ m_z

std::vector<std::vector < std::vector<float> > > FPGATrackSimMapMakerAlg::m_z
private

Definition at line 167 of file FPGATrackSimMapMakerAlg.h.

◆ m_zedfile

std::ofstream FPGATrackSimMapMakerAlg::m_zedfile
private

Definition at line 169 of file FPGATrackSimMapMakerAlg.h.


The documentation for this class was generated from the following files:
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
FPGATrackSimMapMakerAlg::m_subrmap
std::ofstream m_subrmap
Definition: FPGATrackSimMapMakerAlg.h:169
FPGATrackSimMapMakerAlg::m_rmap
std::ofstream m_rmap
Definition: FPGATrackSimMapMakerAlg.h:169
FPGATrackSimMapMakerAlg::makeSubrmapLines
std::string makeSubrmapLines(std::vector< Module * > const &allmods, SiliconTech det, DetectorZone bec, int max)
Definition: FPGATrackSimMapMakerAlg.cxx:920
FPGATrackSimMapMakerAlg::m_description
Gaudi::Property< std::string > m_description
Definition: FPGATrackSimMapMakerAlg.h:90
ReadCellNoiseFromCoolCompare.s1
s1
Definition: ReadCellNoiseFromCoolCompare.py:378
FPGATrackSimMapMakerAlg::m_track2modules
std::map< int, std::vector< Module * > > m_track2modules
Definition: FPGATrackSimMapMakerAlg.h:100
FPGATrackSimEventInputHeader::hits
const std::vector< FPGATrackSimHit > & hits() const
Definition: FPGATrackSimEventInputHeader.h:37
TRTCalib_Extractor.hits
hits
Definition: TRTCalib_Extractor.py:35
SiliconTech::strip
@ strip
FPGATrackSimMapMakerAlg::m_outFileName
Gaudi::Property< std::string > m_outFileName
Definition: FPGATrackSimMapMakerAlg.h:85
PowhegControl_ttHplus_NLO.ss
ss
Definition: PowhegControl_ttHplus_NLO.py:83
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:67
FPGATrackSimMapMakerAlg::m_maxEvents
Gaudi::Property< int > m_maxEvents
Definition: FPGATrackSimMapMakerAlg.h:82
FPGATrackSimMapMakerAlg::m_monitorFile
std::unique_ptr< TFile > m_monitorFile
Definition: FPGATrackSimMapMakerAlg.h:170
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
FPGATrackSimMapMakerAlg::drawSlices
void drawSlices(std::vector< FPGATrackSimHit > const &allHits)
Definition: FPGATrackSimMapMakerAlg.cxx:741
FPGATrackSimMapMakerAlg::m_evtSel
ServiceHandle< IFPGATrackSimEventSelectionSvc > m_evtSel
Definition: FPGATrackSimMapMakerAlg.h:50
ParticleGun_SamplingFraction.bec
int bec
Definition: ParticleGun_SamplingFraction.py:89
TRTCalib_Extractor.det
det
Definition: TRTCalib_Extractor.py:36
dqt_zlumi_pandas.hname
string hname
Definition: dqt_zlumi_pandas.py:280
DetectorZone::posEndcap
@ posEndcap
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:83
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
FPGATrackSimMapMakerAlg::isOnKeyLayer
bool isOnKeyLayer(int keynum, SiliconTech det, DetectorZone bec, int lyr)
Definition: FPGATrackSimMapMakerAlg.cxx:770
min
constexpr double min()
Definition: ap_fixedTest.cxx:26
FPGATrackSimMapMakerAlg::m_globalTrim
Gaudi::Property< float > m_globalTrim
Definition: FPGATrackSimMapMakerAlg.h:89
FPGATrackSimMapMakerAlg::m_sbHits
std::vector< FPGATrackSimHit > m_sbHits
Definition: FPGATrackSimMapMakerAlg.h:104
FPGATrackSimMapMakerAlg::m_det2tech
std::map< std::string, SiliconTech > m_det2tech
Definition: FPGATrackSimMapMakerAlg.h:185
TRTCalib_cfilter.p1
p1
Definition: TRTCalib_cfilter.py:130
PlotCalibFromCool.begin
begin
Definition: PlotCalibFromCool.py:94
skel.it
it
Definition: skel.GENtoEVGEN.py:407
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:70
FPGATrackSimMapMakerAlg::readInputs
StatusCode readInputs(bool &done)
Definition: FPGATrackSimMapMakerAlg.cxx:96
AthCommonDataStore< AthCommonMsg< Algorithm > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< Algorithm > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
InDet::median
float median(std::vector< float > &Vec)
Definition: BTagVrtSec.cxx:35
FPGATrackSimMapMakerAlg::m_hitInputTool
ToolHandle< IFPGATrackSimEventInputHeaderTool > m_hitInputTool
Definition: FPGATrackSimMapMakerAlg.h:47
FPGATrackSimMapMakerAlg::m_eventHeader
FPGATrackSimEventInputHeader m_eventHeader
Definition: FPGATrackSimMapMakerAlg.h:52
FPGATrackSimMapMakerAlg::m_pbHits
std::vector< FPGATrackSimHit > m_pbHits
Definition: FPGATrackSimMapMakerAlg.h:104
FPGATrackSimMapMakerAlg::m_pmap
std::ofstream m_pmap
Definition: FPGATrackSimMapMakerAlg.h:169
TrigInDetValidation_Base.test
test
Definition: TrigInDetValidation_Base.py:142
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
FPGATrackSimMapMakerAlg::m_planes2
const std::vector< std::vector< std::string > > * m_planes2
Definition: FPGATrackSimMapMakerAlg.h:119
FPGATrackSimMapMakerAlg::m_peHits
std::vector< FPGATrackSimHit > m_peHits
Definition: FPGATrackSimMapMakerAlg.h:104
python.TrigEgammaMonitorHelper.TH2F
def TH2F(name, title, nxbins, bins_par2, bins_par3, bins_par4, bins_par5=None, bins_par6=None, path='', **kwargs)
Definition: TrigEgammaMonitorHelper.py:45
dq_defect_bulk_create_defects.line
line
Definition: dq_defect_bulk_create_defects.py:27
xAOD::unsigned
unsigned
Definition: RingSetConf_v1.cxx:662
FPGATrackSimMapMakerAlg::m_pbmax
int m_pbmax
Definition: FPGATrackSimMapMakerAlg.h:106
XMLtoHeader.count
count
Definition: XMLtoHeader.py:84
FPGATrackSimMapMakerAlg::writePmapAndRmap
StatusCode writePmapAndRmap(std::vector< FPGATrackSimHit > const &pbHits, std::vector< FPGATrackSimHit > const &peHits, std::vector< FPGATrackSimHit > const &sbHits, std::vector< FPGATrackSimHit > const &seHits, int region)
Definition: FPGATrackSimMapMakerAlg.cxx:191
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:92
FPGATrackSimMapMakerAlg::m_track2slice
std::map< int, int > m_track2slice
Definition: FPGATrackSimMapMakerAlg.h:101
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
module_driven_slicing.key2
key2
Definition: module_driven_slicing.py:158
FPGATrackSimHit
Definition: FPGATrackSimHit.h:41
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
FPGATrackSimEventInputHeader::nHits
int nHits() const
Definition: FPGATrackSimEventInputHeader.h:38
FPGATrackSimMapMakerAlg::m_keylayer2
std::map< std::string, std::set< int > > m_keylayer2
Definition: FPGATrackSimMapMakerAlg.h:160
FPGATrackSimMapMakerAlg::writeRadiiFile
StatusCode writeRadiiFile(std::vector< FPGATrackSimHit > const &allHits)
Definition: FPGATrackSimMapMakerAlg.cxx:572
FPGATrackSimMapMakerAlg::m_key_etamods
std::map< int, int > m_key_etamods
Definition: FPGATrackSimMapMakerAlg.h:163
PixelModuleFeMask_create_db.remove
string remove
Definition: PixelModuleFeMask_create_db.py:83
compareGeometries.outputFile
string outputFile
Definition: compareGeometries.py:25
CaloSwCorrections.etamod
def etamod(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:206
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
FPGATrackSimMapMakerAlg::m_sbmax
int m_sbmax
Definition: FPGATrackSimMapMakerAlg.h:107
FPGATrackSimEventInfo
Definition: FPGATrackSimEventInfo.h:14
TRTCalib_cfilter.p2
p2
Definition: TRTCalib_cfilter.py:131
FPGATrackSimMapMakerAlg::findPlane
int findPlane(const std::vector< std::vector< std::string >> *planes, const std::string &test)
Definition: FPGATrackSimMapMakerAlg.cxx:785
FPGATrackSimMapMakerAlg::m_usedTracks
std::set< int > m_usedTracks
Definition: FPGATrackSimMapMakerAlg.h:165
python.AthDsoLogger.delimiter
delimiter
Definition: AthDsoLogger.py:70
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:209
createCoolChannelIdFile.buffer
buffer
Definition: createCoolChannelIdFile.py:11
AthCommonDataStore
Definition: AthCommonDataStore.h:52
AthAlgorithm::sysInitialize
virtual StatusCode sysInitialize() override
Override sysInitialize.
Definition: AthAlgorithm.cxx:66
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
FPGATrackSimMapMakerAlg::m_keystring2
Gaudi::Property< std::string > m_keystring2
Definition: FPGATrackSimMapMakerAlg.h:87
maskDeadModules.mod
mod
Definition: maskDeadModules.py:36
AthCommonDataStore< AthCommonMsg< Algorithm > >::outputHandles
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
perfmonmt-refit.slice
slice
Definition: perfmonmt-refit.py:52
FPGATrackSimMapMakerAlg::m_zedfile
std::ofstream m_zedfile
Definition: FPGATrackSimMapMakerAlg.h:169
CaloCondBlobAlgs_fillNoiseFromASCII.inputFile
string inputFile
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:16
SiliconTech
SiliconTech
Definition: FPGATrackSimTypes.h:25
FPGATrackSimMapMakerAlg::makeRmapLines
std::string makeRmapLines(std::vector< FPGATrackSimHit > const &hits, SiliconTech det, DetectorZone bec, int max)
Definition: FPGATrackSimMapMakerAlg.cxx:797
lumiFormat.i
int i
Definition: lumiFormat.py:85
FPGATrackSimMapMakerAlg::m_etapat
std::ofstream m_etapat
Definition: FPGATrackSimMapMakerAlg.h:169
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
Recovery.avg
def avg(a, b)
Definition: Recovery.py:79
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Definition: AthCommonDataStore.h:145
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
FPGATrackSimMapMakerAlg::m_radii
std::vector< std::vector< std::vector< float > > > m_radii
Definition: FPGATrackSimMapMakerAlg.h:166
FPGATrackSimMapMakerAlg::m_drawSlices
Gaudi::Property< bool > m_drawSlices
Definition: FPGATrackSimMapMakerAlg.h:93
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
FPGATrackSimMapMakerAlg::m_keylayer
std::map< std::string, std::set< int > > m_keylayer
Definition: FPGATrackSimMapMakerAlg.h:159
std::remove_if
std::reverse_iterator< DataModel_detail::iterator< DVL > > remove_if(typename std::reverse_iterator< DataModel_detail::iterator< DVL > > beg, typename std::reverse_iterator< DataModel_detail::iterator< DVL > > end, Predicate pred)
Specialization of remove_if for DataVector/List.
Definition: DVL_algorithms.h:114
hist_file_dump.f
f
Definition: hist_file_dump.py:140
AthCommonDataStore< AthCommonMsg< Algorithm > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
FPGATrackSimMapMakerAlg::writeEtaPatterns
StatusCode writeEtaPatterns()
Definition: FPGATrackSimMapMakerAlg.cxx:515
FPGATrackSimMapMakerAlg::m_nSlices
Gaudi::Property< int > m_nSlices
Definition: FPGATrackSimMapMakerAlg.h:88
FPGATrackSimMapMakerAlg::m_hitSGInputTool
ToolHandle< IFPGATrackSimInputTool > m_hitSGInputTool
Definition: FPGATrackSimMapMakerAlg.h:48
FPGATrackSimMapMakerAlg::m_remapModules
Gaudi::Property< bool > m_remapModules
Definition: FPGATrackSimMapMakerAlg.h:92
FPGATrackSimEventInputHeader::event
FPGATrackSimEventInfo const & event() const
Definition: FPGATrackSimEventInputHeader.h:33
FPGATrackSimMapMakerAlg::m_bec2zone
std::map< std::string, DetectorZone > m_bec2zone
Definition: FPGATrackSimMapMakerAlg.h:186
FPGATrackSimMapMakerAlg::m_overridePlanes
Gaudi::Property< std::vector< std::vector< std::string > > > m_overridePlanes
Definition: FPGATrackSimMapMakerAlg.h:156
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
FPGATrackSimMapMakerAlg::m_keystring
Gaudi::Property< std::string > m_keystring
Definition: FPGATrackSimMapMakerAlg.h:86
FPGATrackSimMapMakerAlg::m_key_etamods2
std::set< int > m_key_etamods2
Definition: FPGATrackSimMapMakerAlg.h:164
python.draw_obj.zone
def zone(nx, ny)
Definition: draw_obj.py:291
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
FPGATrackSimMapMakerAlg::writeMedianZFile
StatusCode writeMedianZFile(std::vector< FPGATrackSimHit > const &allHits)
Definition: FPGATrackSimMapMakerAlg.cxx:642
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
FPGATrackSimMapMakerAlg::m_z
std::vector< std::vector< std::vector< float > > > m_z
Definition: FPGATrackSimMapMakerAlg.h:167
FPGATrackSimMapMakerAlg::m_key2
bool m_key2
Definition: FPGATrackSimMapMakerAlg.h:162
FPGATrackSimMapMakerAlg::m_trim
Gaudi::Property< float > m_trim
Definition: FPGATrackSimMapMakerAlg.h:84
FPGATrackSimMapMakerAlg::m_geoTag
Gaudi::Property< std::string > m_geoTag
Definition: FPGATrackSimMapMakerAlg.h:91
AthAlgorithm::m_extendedExtraObjects
DataObjIDColl m_extendedExtraObjects
Definition: AthAlgorithm.h:79
DetectorZone::negEndcap
@ negEndcap
runIDAlign.accumulate
accumulate
Update flags based on parser line args.
Definition: runIDAlign.py:60
FPGATrackSimMapMakerAlg::m_planes
const std::vector< std::vector< std::string > > * m_planes
Definition: FPGATrackSimMapMakerAlg.h:118
FPGATrackSimMapMakerAlg::m_seHits
std::vector< FPGATrackSimHit > m_seHits
Definition: FPGATrackSimMapMakerAlg.h:104
FPGATrackSimMapMakerAlg::m_modules
std::map< FPGATrackSimModuleId, Module > m_modules
Definition: FPGATrackSimMapMakerAlg.h:99
a
TList * a
Definition: liststreamerinfos.cxx:10
DetectorZone
DetectorZone
Definition: FPGATrackSimTypes.h:28
FPGATrackSimMapMakerAlg::m_moduleRelabel
FPGATrackSimModuleRelabel * m_moduleRelabel
Definition: FPGATrackSimMapMakerAlg.h:96
FPGATrackSimMapMakerAlg::m_semax
std::vector< int > m_semax
Definition: FPGATrackSimMapMakerAlg.h:109
h
FPGATrackSimMapMakerAlg::m_pemax
std::vector< int > m_pemax
Definition: FPGATrackSimMapMakerAlg.h:108
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
FPGATrackSimMapMakerAlg::m_radfile
std::ofstream m_radfile
Definition: FPGATrackSimMapMakerAlg.h:169
FPGATrackSimMapMakerAlg::writeSubrmap
StatusCode writeSubrmap(std::vector< FPGATrackSimHit > const &allHits)
Definition: FPGATrackSimMapMakerAlg.cxx:294
ReadCellNoiseFromCoolCompare.s2
s2
Definition: ReadCellNoiseFromCoolCompare.py:379
FPGATrackSimMapMakerAlg::m_region
Gaudi::Property< int > m_region
Definition: FPGATrackSimMapMakerAlg.h:83
DetectorZone::barrel
@ barrel
GRLStrUtil::trim
void trim(std::string &input)
Definition: StrUtil.cxx:12
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:629
python.SystemOfUnits.s
float s
Definition: SystemOfUnits.py:147
AthAlgorithm::AthAlgorithm
AthAlgorithm()
Default constructor:
dot
Definition: dot.py:1
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:801
LHEF::Writer
Pythia8::Writer Writer
Definition: Prophecy4fMerger.cxx:12
FPGATrackSimMapMakerAlg::m_overridePlanes2
Gaudi::Property< std::vector< std::vector< std::string > > > m_overridePlanes2
Definition: FPGATrackSimMapMakerAlg.h:157
FPGATrackSimMapMakerAlg::m_allHits
std::vector< FPGATrackSimHit > m_allHits
Definition: FPGATrackSimMapMakerAlg.h:104
FPGATrackSimEventInputHeader::reset
void reset()
Definition: FPGATrackSimEventInputHeader.cxx:14
FPGATrackSimMapMakerAlg::parseKeyString
void parseKeyString()
Definition: FPGATrackSimMapMakerAlg.cxx:822
FPGATrackSimMapMakerAlg::m_slice2modules
std::map< int, std::vector< Module * > > m_slice2modules
Definition: FPGATrackSimMapMakerAlg.h:100
FPGATrackSimModuleRelabel::remap
bool remap(FPGATrackSimHit &hit) const
Definition: FPGATrackSimModuleRelabel.cxx:25
EgEfficiencyCorr_testFixedInput.etas
list etas
Definition: EgEfficiencyCorr_testFixedInput.py:9
SiliconTech::pixel
@ pixel
fitman.k
k
Definition: fitman.py:528
python.SystemOfUnits.m
float m
Definition: SystemOfUnits.py:106
ReadCalibFromCrest.allmods
allmods
Definition: ReadCalibFromCrest.py:302
python.LArMinBiasAlgConfig.float
float
Definition: LArMinBiasAlgConfig.py:65
ServiceHandle< ICondSvc >
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
FPGATrackSimModuleRelabel
Definition: FPGATrackSimModuleRelabel.h:30
module_driven_slicing.key1
key1
Definition: module_driven_slicing.py:157