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 > &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 > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &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" }
 
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< bool > m_doSpacePoints {this, "doSpacePoints", false, "Use 9L instead of 8L configuration for first stage (for example)"}
 
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"}
 
Gaudi::Property< bool > m_insideout {this, "doInsideOut", false, "5 layers pixel-only configuration"}
 
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::vector< std::string > > > * m_planes {}
 
const std::vector< std::vector< std::vector< std::string > > > m_planes_default
 
const std::vector< std::vector< std::vector< std::string > > > m_planes_sp
 
const std::vector< std::vector< std::vector< std::string > > > m_planes2
 
const std::vector< std::vector< std::vector< std::string > > > m_planes_insideout
 
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 31 of file FPGATrackSimMapMakerAlg.h.

Member Typedef Documentation

◆ FPGATrackSimModuleId

Definition at line 34 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 > &  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 > &  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 > &  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 > &  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 > &  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 699 of file FPGATrackSimMapMakerAlg.cxx.

700 {
701  m_monitorFile->cd();
702 
703  std::vector<TH2F*> h_slicemap;
704  char *hname = new char[20];
705 
706  for (unsigned i = 0; i < (unsigned)m_nSlices.value(); i++)
707  {
708  sprintf(hname,"rz_slice%u",i);
709  // This should just default to the entire range, I think.
710  // The user can reduce the binning.
711  TH2F *h = new TH2F(hname,hname,7000,-3500,3500,1200,0,1200);
712  h_slicemap.push_back(h);
713  }
714 
715  for (const auto& hit: allHits)
716  {
717  if (m_usedTracks.find(hit.getEventIndex()) == m_usedTracks.end()) continue; // skip if we don't use this track
718  int s = m_track2slice[hit.getEventIndex()];
719  h_slicemap[s]->Fill(hit.getZ(),hit.getR());
720  }
721 
722  for (int i = 0; i < m_nSlices.value(); i++)
723  h_slicemap[i]->Write();
724 
725  delete [] hname;
726 }

◆ 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 71 of file FPGATrackSimMapMakerAlg.cxx.

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

◆ 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 681 of file FPGATrackSimMapMakerAlg.cxx.

682 {
683  // Write the output
689  m_monitorFile.reset();
690  delete m_moduleRelabel;
691  m_moduleRelabel = nullptr;
692  return StatusCode::SUCCESS;
693 }

◆ findPlane()

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

Definition at line 743 of file FPGATrackSimMapMakerAlg.cxx.

744 {
745  int pcounter = 0;
746  for (auto& plane : planes) {
747  for (auto& layer : plane) {
748  if (test == layer) return pcounter;
749  }
750  pcounter ++;
751  }
752  return -1;
753 }

◆ initialize()

StatusCode FPGATrackSimMapMakerAlg::initialize ( )
override

Definition at line 23 of file FPGATrackSimMapMakerAlg.cxx.

24 {
25 
26  m_monitorFile.reset (new TFile((m_outFileName.value() + ".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 (m_doSpacePoints) {
47  ATH_MSG_INFO("Using Space Point Configuration");
49  } else if (m_insideout) {
50  ATH_MSG_INFO("Using Inside-Out Configuration");
52  } else {
53  ATH_MSG_INFO("Using Default Configuration");
55  }
56 
58  ATH_CHECK(m_hitInputTool.retrieve());
59 
60  ATH_MSG_DEBUG("initialize() Instantiating root objects");
61  ATH_MSG_DEBUG("initialize() Finished");
62 
63 
64  return StatusCode::SUCCESS;
65 }

◆ 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 728 of file FPGATrackSimMapMakerAlg.cxx.

729 {
730  int det = static_cast<int>(t_det);
731  int bec = static_cast<int>(t_bec);
732  if (keynum == 1)
733  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())
734  return true;
735 
736  if (keynum == 2)
737  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())
738  return true;
739 
740  return false;
741 }

◆ makeRmapLines()

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

Definition at line 755 of file FPGATrackSimMapMakerAlg.cxx.

756 {
757  std::stringstream rmap_line;
758  std::set<int> etas, phis;
759 
760  for(int lyr = 0; lyr <= max; lyr++)
761  {
762  etas.clear();
763  phis.clear();
764  for (const auto& hit: hits)
765  {
766  if(static_cast<int>(hit.getPhysLayer()) == lyr && hit.getDetectorZone() == bec) // cast from uint to int just to remove Wsign-compare warnings
767  {
768  etas.insert(hit.getEtaModule());
769  phis.insert(hit.getPhiModule());
770  }
771  }
772  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";
773  else rmap_line << static_cast<int>(det) << " " << static_cast<int>(bec) << " " << lyr << " 0 0 0 0 0 0\n";
774 
775  }
776 
777  return rmap_line.str();
778 }

◆ makeSubrmapLines()

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

Definition at line 874 of file FPGATrackSimMapMakerAlg.cxx.

875 {
876  std::stringstream subrmap_line;
877  std::set<int> etas, phis;
878 
879  std::vector<Module*> mods;
880  for (auto* mod: allmods) // just want modules in pb/pe/sb/se etc, not all at once
881  if (mod->det == det && mod->bec == bec) mods.push_back(mod);
882 
883  for(int lyr = 0; lyr <= max; lyr++)
884  {
885  etas.clear();
886  phis.clear();
887  for (auto mod: mods)
888  {
889  if(mod->lyr == lyr)
890  {
891  etas.insert(mod->eta);
892  phis.insert(mod->phi);
893  }
894  }
895  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";
896  else subrmap_line << static_cast<int>(det) << " " << static_cast<int>(bec) << " " << lyr << " 0 0 0 0 0 0\n";
897 
898  }
899 
900  return subrmap_line.str();
901 }

◆ 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 780 of file FPGATrackSimMapMakerAlg.cxx.

781 {
782  // Parse keystring and define the Key Layer
783  std::string delimiter = ",";
784  std::string s = m_keystring.value();
785  std::string det, bec, lyr;
786  std::map <std::string, std::vector<std::string>> abrevs = { {"pb",{"pixel","barrel"}}, {"pe",{"pixel","endcap"}}, {"sb",{"strip","barrel"}}, {"se",{"strip","endcap"}} };
787  if( s.find(delimiter) != std::string::npos) // keylayer format is 'strip,barrel,4'
788  {
789  try {
790  std::string det = s.substr(0, s.find(delimiter));
791  s.erase(0, s.find(delimiter) + delimiter.length());
792  std::string bec = s.substr(0, s.find(delimiter));
793  s.erase(0, s.find(delimiter) + delimiter.length());
794  std::string lyr = s.substr(0, s.find(delimiter));
795  s.erase(0, s.find(delimiter) + delimiter.length());
796  m_keylayer["det"].insert(static_cast<int>(m_det2tech[det]));
797  m_keylayer["bec"].insert(static_cast<int>(m_bec2zone[bec]));
798  m_keylayer["lyr"].insert(std::stoi(lyr));
799  } catch (...){
800  ATH_MSG_ERROR("Invalid KeyString: '" << m_keystring << "'." << "Accepted formats are 'strip,posEndcap,2', 'pixel,barrel,3', or 'plane 0'");
801  }
802  }
803  else // keylayer format is 'plane 0'
804  {
805  std::string delimiter = " ";
806  try {
807  s.erase(0, s.find(delimiter) + delimiter.length());
808  std::string plane = s.substr(0, s.find(delimiter));
809  std::vector<std::string> s = (m_planes->at(m_region))[std::stoi(plane)];
810  for (unsigned i = 0; i < s.size(); i++){
811  std::string reg = s[i].substr(0, 2);
812  std::vector<std::string> zone = abrevs[reg];
813  if (s[i].back() == '+') zone[1] = "posEndcap";
814  if (s[i].back() == '-') zone[1] = "negEndcap";
815  s[i].erase(std::remove(s[i].begin(), s[i].end(), '+'), s[i].end());
816  s[i].erase(std::remove(s[i].begin(), s[i].end(), '-'), s[i].end());
817  std::string lyr = s[i].substr(2);
818  m_keylayer["det"].insert(static_cast<int>(m_det2tech[zone[0]]));
819  m_keylayer["bec"].insert(static_cast<int>(m_bec2zone[zone[1]]));
820  m_keylayer["lyr"].insert(std::stoi(lyr));
821  }
822  } catch (...){
823  ATH_MSG_ERROR("Invalid KeyString: '" << m_keystring << "'." << "Accepted formats are 'strip,posEndcap,2', 'pixel,barrel,3', or 'plane 0'");
824  }
825  }
826 
827  // if 2D slicing
828  if (m_keystring2.value() != "")
829  {
830  m_key2 = true;
831  std::string s = m_keystring2.value();
832  if( s.find(delimiter) != std::string::npos) // keylayer format is 'strip,barrel,8'
833  {
834  try {
835  std::string det = s.substr(0, s.find(delimiter));
836  s.erase(0, s.find(delimiter) + delimiter.length());
837  std::string bec = s.substr(0, s.find(delimiter));
838  s.erase(0, s.find(delimiter) + delimiter.length());
839  std::string lyr = s.substr(0, s.find(delimiter));
840  s.erase(0, s.find(delimiter) + delimiter.length());
841  m_keylayer2["det"].insert(static_cast<int>(m_det2tech[det]));
842  m_keylayer2["bec"].insert(static_cast<int>(m_bec2zone[bec]));
843  m_keylayer2["lyr"].insert(std::stoi(lyr));
844  } catch (...){
845  ATH_MSG_ERROR("Invalid KeyString2: '" << m_keystring2 << "'." << "Accepted formats are 'strip,posEndcap,2', 'pixel,barrel,3', or 'plane 0'");
846  }
847  }
848  else // keylayer format is 'plane 0'
849  {
850  std::string delimiter = " ";
851  try {
852  s.erase(0, s.find(delimiter) + delimiter.length());
853  std::string plane = s.substr(0, s.find(delimiter));
854  std::vector<std::string> s = (m_planes->at(m_region))[std::stoi(plane)];
855  for (unsigned i = 0; i < s.size(); i++){
856  std::string reg = s[i].substr(0, 2);
857  std::vector<std::string> zone = abrevs[reg];
858  if (s[i].back() == '+') zone[1] = "posEndcap";
859  if (s[i].back() == '-') zone[1] = "negEndcap";
860  s[i].erase(std::remove(s[i].begin(), s[i].end(), '+'), s[i].end());
861  s[i].erase(std::remove(s[i].begin(), s[i].end(), '-'), s[i].end());
862  std::string lyr = s[i].substr(2);
863  m_keylayer2["det"].insert(static_cast<int>(m_det2tech[zone[0]]));
864  m_keylayer2["bec"].insert(static_cast<int>(m_bec2zone[zone[1]]));
865  m_keylayer2["lyr"].insert(std::stoi(lyr));
866  }
867  } catch (...){
868  ATH_MSG_ERROR("Invalid KeyString2: '" << m_keystring2 << "'." << "Accepted formats are 'strip,posEndcap,2', 'pixel,barrel,3', or 'plane 0'");
869  }
870  }
871  }
872 }

◆ readInputs()

StatusCode FPGATrackSimMapMakerAlg::readInputs ( bool &  done)
private

Definition at line 98 of file FPGATrackSimMapMakerAlg.cxx.

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

◆ 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 476 of file FPGATrackSimMapMakerAlg.cxx.

477 {
478  std::stringstream trim;
479  std::stringstream gtrim;
480  trim << std::fixed << std::setprecision(3) << m_trim;
481  gtrim << std::fixed << std::setprecision(3) << m_globalTrim;
482  std::string str_trim = trim.str();
483  std::string str_gtrim = gtrim.str();
484  int dot = str_trim.find_last_of(".");
485  str_trim.replace(dot,1,"p");
486  str_gtrim.replace(str_gtrim.find_last_of("."), 1, "p");
487 
488  std::string slicingType = "";
489  if (m_key2) slicingType = "2D";
490  std::string etapat_path = m_outFileName.value() + "region" + std::to_string(m_region) + "_trim" + str_trim + + "_gtrim" + str_gtrim + "_NSlices-" + std::to_string(m_nSlices.value()) + slicingType + "_etapatterns.patt";
491 
492  ATH_MSG_INFO("Creating eta patterns file: " << etapat_path);
493  m_etapat.open(etapat_path, std::ofstream::out);
494 
495  // assign logical layer to each module
496  for (auto& pair: m_track2modules) {
497  for (auto& m: pair.second)
498  {
499  if (m->det == SiliconTech::pixel && m->bec == DetectorZone::barrel) m->plane = findPlane(m_planes->at(m_region), "pb" + std::to_string(m->lyr));
500  if (m->det == SiliconTech::pixel && m->bec == DetectorZone::posEndcap) m->plane = findPlane(m_planes->at(m_region), "pe" + std::to_string(m->lyr) + "+");
501  if (m->det == SiliconTech::pixel && m->bec == DetectorZone::negEndcap) m->plane = findPlane(m_planes->at(m_region), "pe" + std::to_string(m->lyr) + "-");
502 
503  if (m->det == SiliconTech::strip && m->bec == DetectorZone::barrel) m->plane = findPlane(m_planes->at(m_region), "sb" + std::to_string(m->lyr));
504  if (m->det == SiliconTech::strip && m->bec == DetectorZone::posEndcap) m->plane = findPlane(m_planes->at(m_region), "se" + std::to_string(m->lyr) + "+");
505  if (m->det == SiliconTech::strip && m->bec == DetectorZone::negEndcap) m->plane = findPlane(m_planes->at(m_region), "se" + std::to_string(m->lyr) + "-");
506  }
507  }
508 
509  for(auto trk: m_usedTracks)
510  {
511  std::stringstream track_etapatts;
512  unsigned planesDone = 0;
513  for (unsigned p = 0; p < (m_planes->at(m_region)).size(); p++)
514  {
515  for (const Module* m : m_track2modules[trk]) {
516  if (m->plane == static_cast<int>(p))
517  {
518  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";
519  planesDone++;
520  break;
521  }
522  }
523  }
524  if (planesDone == (m_planes->at(m_region)).size())
525  m_etapat << track_etapatts.str() << "\n";
526 
527  }
528  m_etapat.close();
529  return StatusCode::SUCCESS;
530 }

◆ writeMedianZFile()

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

Definition at line 601 of file FPGATrackSimMapMakerAlg.cxx.

602 {
603  // calculate median z. We do this globally and slice-by-slice.
604  m_z.resize(m_nSlices.value(), std::vector<std::vector<float>>((m_planes->at(m_region)).size(),std::vector<float>(0)));
605  for (const auto& hit: allHits)
606  {
607  SiliconTech det = hit.getDetType();
608  DetectorZone bec = hit.getDetectorZone();
609  int lyr = hit.getPhysLayer();
610  int slice = m_track2slice[hit.getEventIndex()];
611  int plane = -1;
612  if (det == SiliconTech::pixel && bec == DetectorZone::barrel) plane = findPlane(m_planes->at(m_region), "pb" + std::to_string(lyr));
613  if (det == SiliconTech::pixel && bec == DetectorZone::posEndcap) plane = findPlane(m_planes->at(m_region), "pe" + std::to_string(lyr) + "+");
614  if (det == SiliconTech::pixel && bec == DetectorZone::negEndcap) plane = findPlane(m_planes->at(m_region), "pe" + std::to_string(lyr) + "-");
615  if (det == SiliconTech::strip && bec == DetectorZone::barrel) plane = findPlane(m_planes->at(m_region), "sb" + std::to_string(lyr));
616  if (det == SiliconTech::strip && bec == DetectorZone::posEndcap) plane = findPlane(m_planes->at(m_region), "se" + std::to_string(lyr) + "+");
617  if (det == SiliconTech::strip && bec == DetectorZone::negEndcap) plane = findPlane(m_planes->at(m_region), "se" + std::to_string(lyr) + "-");
618 
619  if (plane != -1) {
620  m_z[slice][plane].push_back(hit.getZ());
621  }
622  }
623 
624  // print file
625  std::string zed_path = m_outFileName.value() + "region" + std::to_string(m_region) + "_NSlices-" + std::to_string(m_nSlices.value()) + "_MedianZ.txt";
626  ATH_MSG_INFO("Creating median z file: " << zed_path);
627  m_zedfile.open(zed_path, std::ofstream::out);
628  for (int s = 0; s < m_nSlices.value(); s++){
629  m_zedfile << std::to_string(s) << " ";
630  for (unsigned p = 0; p < (m_planes->at(m_region)).size(); p++){
631  if (m_z[s][p].size() != 0){
632  float minZ = *std::min_element(m_z[s][p].begin(), m_z[s][p].end());
633  float maxZ = *std::max_element(m_z[s][p].begin(), m_z[s][p].end());
634  float median = (minZ + maxZ)/2;
635  m_zedfile << std::setprecision(3) << std::fixed << median << " ";
636  } else {
637  int median = -1;
638  m_zedfile << median << " ";
639  }
640  }
641  m_zedfile << std::endl;
642  }
643 
644  // Now do this globally. Note: should this be meanZ instead of medianZ in the forward region?
645  m_zedfile << -1 << " ";
646  for (unsigned p = 0; p < (m_planes->at(m_region)).size(); p++) {
647  float minZ = 0;
648  float maxZ = 0;
649  bool doneInitial = false;
650  for (int s = 0; s < m_nSlices.value(); s++) {
651  if (m_z[s][p].size() != 0) {
652  float newMinZ = *std::min_element(m_z[s][p].begin(), m_z[s][p].end());
653  float newMaxZ = *std::max_element(m_z[s][p].begin(), m_z[s][p].end());
654  // slightly clunky, but z can be positive and negative so there's not a sane initial/placeholder value.
655  if (doneInitial) {
656  minZ = std::min(minZ, newMinZ);
657  maxZ = std::max(maxZ, newMaxZ);
658  } else {
659  minZ = newMinZ;
660  maxZ = newMaxZ;
661  doneInitial = true;
662  }
663  }
664  }
665  if (doneInitial) {
666  float median = (minZ + maxZ)/2;
667  m_zedfile << std::setprecision(3) << std::fixed << median << " ";
668  } else {
669  int median = -1;
670  m_zedfile << median << " ";
671  }
672  }
673  m_zedfile << std::endl;
674 
675  m_zedfile.close();
676 
677  return StatusCode::SUCCESS;
678 }

◆ 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 180 of file FPGATrackSimMapMakerAlg.cxx.

181 {
182  // Plane Map
183 
184  // to avoid vector _M_range_check errors, print at least one line for each DetectorZone
185  if (m_pbmax == -1) m_pbmax = 0;
186  if (m_sbmax == -1) m_sbmax = 0;
187  if (m_pemax[0] == -1) m_pemax[0] = 0;
188  if (m_pemax[1] == -1) m_pemax[1] = 0;
189  if (m_semax[0] == -1) m_semax[0] = 0;
190  if (m_semax[1] == -1) m_semax[1] = 0;
191 
192  std::string pmap_path = m_outFileName.value() + "region" + std::to_string(m_region) + ".pmap";
193  ATH_MSG_INFO("Creating pmap: " << pmap_path);
194  m_pmap.open(pmap_path, std::ofstream::out);
195 
196  m_pmap << m_geoTag.value() << "\n" << m_planes->at(reg).size() << " logical_s1\n" << m_planes2[reg].size() << " logical_s2\n";
197  m_pmap << m_pbmax+1 << " pixel barrel \n" << m_pemax[0]+1 << " pixel endcap+ \n" << m_pemax[1]+1 << " pixel endcap- \n";
198  m_pmap << m_sbmax+1 << " SCT barrel \n" << m_semax[0]+1 << " SCT endcap+\n" << m_semax[1]+1 << " SCT endcap-\n";
199  m_pmap << "! silicon endCap physDisk physLayer ['stereo' stripSide <strip only>] 'plane1' logiLayer1 'plane2' logiLayer2\n";
200  m_pmap << "\nregion " << reg << "\n";
201 
202  int p1,p2;
203  for (int lyr = 0; lyr <= m_pbmax; lyr++) { // Pixel Barrel
204  p1 = findPlane(m_planes->at(reg), "pb" + std::to_string(lyr));
205  p2 = findPlane(m_planes2[reg], "pb" + std::to_string(lyr));
206  m_pmap << "pixel 0 -1 " << lyr << " plane1 " << p1 << " plane2 " << p2 << "\n";
207  }
208  for (int lyr = 0; lyr <= m_pemax[0]; lyr++) { // Pixel Postive Endap
209  p1 = findPlane(m_planes->at(reg), "pe" + std::to_string(lyr) + "+");
210  p2 = findPlane(m_planes2[reg], "pe" + std::to_string(lyr) + "+");
211  m_pmap << "pixel 1 " << lyr << " " << lyr << " plane1 " << p1 << " plane2 " << p2 << "\n";
212  }
213  for (int lyr = 0; lyr <= m_pemax[1]; lyr++) { // Pixel Negative Endcap
214  p1 = findPlane(m_planes->at(reg), "pe" + std::to_string(lyr) + "-");
215  p2 = findPlane(m_planes2[reg], "pe" + std::to_string(lyr) + "-");
216  m_pmap << "pixel 2 " << lyr << " " << lyr << " plane1 " << p1 << " plane2 " << p2 << "\n";
217  }
218  for (int lyr = 0; lyr <= m_sbmax; lyr++) { // Strip Barrel
219  p1 = findPlane(m_planes->at(reg), "sb" + std::to_string(lyr));
220  p2 = findPlane(m_planes2[reg], "sb" + std::to_string(lyr));
221  m_pmap << "SCT 0 -1 " << lyr << " stereo " << lyr % 2 << " plane1 " << p1 << " plane2 " << p2 << "\n";
222  }
223  for (int lyr = 0; lyr <= m_semax[0]; lyr++) { // Strip Positive Endcap
224  p1 = findPlane(m_planes->at(reg), "se" + std::to_string(lyr) + "+");
225  p2 = findPlane(m_planes2[reg], "se" + std::to_string(lyr) + "+");
226  m_pmap << "SCT 1 " << lyr/2 << " " << lyr << " stereo " << lyr % 2 << " plane1 " << p1 << " plane2 " << p2 << "\n";
227  }
228  for (int lyr = 0; lyr <= m_semax[1]; lyr++) { // Strip Negative Endcap
229  p1 = findPlane(m_planes->at(reg), "se" + std::to_string(lyr) + "-");
230  p2 = findPlane(m_planes2[reg], "se" + std::to_string(lyr) + "-");
231  m_pmap << "SCT 2 " << lyr/2 << " " << lyr << " stereo " << lyr % 2 << " plane1 " << p1 << " plane2 " << p2 << "\n";
232  }
233 
234  // Region Map
235  std::string rmap_path = m_outFileName.value() + "region" + std::to_string(m_region) + ".rmap";
236  ATH_MSG_INFO("Creating rmap: " << rmap_path);
237  m_rmap.open(rmap_path, std::ofstream::out);
238  m_rmap << "towers 1 phi 16\n\n0\n";
239 
243 
247 
248  m_pmap.close();
249  m_rmap.close();
250 
251 
252  return StatusCode::SUCCESS;
253 }

◆ writeRadiiFile()

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

Definition at line 532 of file FPGATrackSimMapMakerAlg.cxx.

533 {
534  // calculate mean radii.
535  m_radii.resize(m_nSlices.value(), std::vector<std::vector<float>>(m_planes->at(m_region).size(),std::vector<float>(0)));
536  for (const auto& hit: allHits)
537  {
538  SiliconTech det = hit.getDetType();
539  DetectorZone bec = hit.getDetectorZone();
540  int lyr = hit.getPhysLayer();
541  int slice = m_track2slice[hit.getEventIndex()];
542  int plane = -1;
543  if (det == SiliconTech::pixel && bec == DetectorZone::barrel) plane = findPlane(m_planes->at(m_region), "pb" + std::to_string(lyr));
544  if (det == SiliconTech::pixel && bec == DetectorZone::posEndcap) plane = findPlane(m_planes->at(m_region), "pe" + std::to_string(lyr) + "+");
545  if (det == SiliconTech::pixel && bec == DetectorZone::negEndcap) plane = findPlane(m_planes->at(m_region), "pe" + std::to_string(lyr) + "-");
546  if (det == SiliconTech::strip && bec == DetectorZone::barrel) plane = findPlane(m_planes->at(m_region), "sb" + std::to_string(lyr));
547  if (det == SiliconTech::strip && bec == DetectorZone::posEndcap) plane = findPlane(m_planes->at(m_region), "se" + std::to_string(lyr) + "+");
548  if (det == SiliconTech::strip && bec == DetectorZone::negEndcap) plane = findPlane(m_planes->at(m_region), "se" + std::to_string(lyr) + "-");
549 
550  if (plane != -1) {
551  m_radii[slice][plane].push_back(hit.getR());
552  }
553  }
554 
555  // print file
556  std::string radii_path = m_outFileName.value() + "region" + std::to_string(m_region) + "_NSlices-" + std::to_string(m_nSlices.value()) + "_MeanRadii.txt";
557  ATH_MSG_INFO("Creating radii file: " << radii_path);
558  m_radfile.open(radii_path, std::ofstream::out);
559  for (int s = 0; s < m_nSlices.value(); s++){
560  m_radfile << std::to_string(s) << " ";
561  for (unsigned p = 0; p < (m_planes->at(m_region)).size(); p++){
562  if (m_radii[s][p].size() != 0){
563  // "If left to type inference, op operates on values of the same type as
564  // init which can result in unwanted casting of the iterator elements."
565  // https://en.cppreference.com/w/cpp/algorithm/accumulate
566  float avg = std::accumulate(m_radii[s][p].begin(), m_radii[s][p].end(), 0.0f) / float(m_radii[s][p].size());
567  m_radfile << std::setprecision(3) << std::fixed << avg << " ";
568  } else {
569  int avg = -1;
570  m_radfile << avg << " ";
571  }
572  }
573  m_radfile << "\n";
574  }
575 
576  // Calculate global mean radii by reversing the order of the above two loops.
577  m_radfile << -1 << " ";
578  for (unsigned p = 0; p < (m_planes->at(m_region)).size(); p++) {
579  float avg = 0;
580  int count = 0;
581  for (int s = 0; s < m_nSlices.value(); s++) {
582  if (m_radii[s][p].size() != 0) {
584  count += m_radii[s][p].size();
585  }
586  }
587  if (count > 0) {
588  avg /= float(count);
589  m_radfile << std::setprecision(3) << std::fixed << avg << " ";
590  } else {
591  m_radfile << -1 << " ";
592  }
593  }
594  m_radfile << std::endl;
595 
596  m_radfile.close();
597 
598  return StatusCode::SUCCESS;
599 }

◆ writeSubrmap()

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

Definition at line 255 of file FPGATrackSimMapMakerAlg.cxx.

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

Member Data Documentation

◆ m_allHits

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

Definition at line 101 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 278 of file FPGATrackSimMapMakerAlg.h.

◆ m_description

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

Definition at line 86 of file FPGATrackSimMapMakerAlg.h.

◆ m_det2tech

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

Definition at line 277 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 266 of file FPGATrackSimMapMakerAlg.h.

◆ m_doSpacePoints

Gaudi::Property<bool> FPGATrackSimMapMakerAlg::m_doSpacePoints {this, "doSpacePoints", false, "Use 9L instead of 8L configuration for first stage (for example)"}
private

Definition at line 84 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 89 of file FPGATrackSimMapMakerAlg.h.

◆ m_etapat

std::ofstream FPGATrackSimMapMakerAlg::m_etapat
private

Definition at line 261 of file FPGATrackSimMapMakerAlg.h.

◆ m_eventHeader

FPGATrackSimEventInputHeader FPGATrackSimMapMakerAlg::m_eventHeader
private

Definition at line 47 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 87 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 85 of file FPGATrackSimMapMakerAlg.h.

◆ m_hitInputTool

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

Definition at line 45 of file FPGATrackSimMapMakerAlg.h.

◆ m_insideout

Gaudi::Property<bool> FPGATrackSimMapMakerAlg::m_insideout {this, "doInsideOut", false, "5 layers pixel-only configuration"}
private

Definition at line 90 of file FPGATrackSimMapMakerAlg.h.

◆ m_key2

bool FPGATrackSimMapMakerAlg::m_key2 = false
private

Definition at line 254 of file FPGATrackSimMapMakerAlg.h.

◆ m_key_etamods

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

Definition at line 255 of file FPGATrackSimMapMakerAlg.h.

◆ m_key_etamods2

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

Definition at line 256 of file FPGATrackSimMapMakerAlg.h.

◆ m_keylayer

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

Definition at line 251 of file FPGATrackSimMapMakerAlg.h.

◆ m_keylayer2

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

Definition at line 252 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 81 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 82 of file FPGATrackSimMapMakerAlg.h.

◆ m_maxEvents

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

Definition at line 77 of file FPGATrackSimMapMakerAlg.h.

◆ m_moduleRelabel

FPGATrackSimModuleRelabel* FPGATrackSimMapMakerAlg::m_moduleRelabel = nullptr
private

Definition at line 93 of file FPGATrackSimMapMakerAlg.h.

◆ m_modules

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

Definition at line 96 of file FPGATrackSimMapMakerAlg.h.

◆ m_monitorFile

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

Definition at line 262 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 83 of file FPGATrackSimMapMakerAlg.h.

◆ m_outFileName

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

Definition at line 80 of file FPGATrackSimMapMakerAlg.h.

◆ m_pbHits

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

Definition at line 101 of file FPGATrackSimMapMakerAlg.h.

◆ m_pbmax

int FPGATrackSimMapMakerAlg::m_pbmax = -1
private

Definition at line 103 of file FPGATrackSimMapMakerAlg.h.

◆ m_peHits

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

Definition at line 101 of file FPGATrackSimMapMakerAlg.h.

◆ m_pemax

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

Definition at line 105 of file FPGATrackSimMapMakerAlg.h.

◆ m_planes

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

Definition at line 115 of file FPGATrackSimMapMakerAlg.h.

◆ m_planes2

const std::vector<std::vector <std::vector <std::string> > > FPGATrackSimMapMakerAlg::m_planes2
private
Initial value:
=
{
{
{"pb4"},{"sb0"},{"sb1"},{"sb2"},{"sb3"},{"sb4"},{"sb5"},{"sb6"},{"sb7"},{"pb0"},{"pb1"},{"pb2"},{"pb3"}
},
{
{"pb4"},{"sb0"},{"sb1"},{"sb2"},{"sb3"},{"sb4"},{"sb5"},{"sb6"},{"sb7"},{"pb0"},{"pb1"},{"pb2"},{"pb3"}
},
{
{"-1"},{"-1"},{"-1"},{"-1"},{"-1"},{"-1"},{"-1"},{"-1"},{"-1"},{"-1"},{"-1"},{"-1"},{"-1"}
},
{
{"pb4","pe83+","pe84+","pe85+","pe86+","pe87+","pe88+","pe89+"},{"se4+"},{"se5+"},{"se6+"},{"se7+"},{"se8+"},{"se9+"},{"se10+"},{"se11+"},{"pb2"},{"pb3","pe58+"},{"se2+"},{"se3+"},
},
{
{"pe0+"},{"pe1+"},{"pe2+"},{"pe3+"},{"pe4+"},{"pe5+"},{"pe6+"},{"pe7+"},{"pe8+"},{"pe9+"},{"pe10+"},{"pe11+"},{"pe12+"}
},
{
{"pb4"},{"sb0"},{"sb1"},{"sb2"},{"sb3"},{"sb4"},{"sb5"},{"sb6"},{"sb7"},{"pb0"},{"pb1"},{"pb2"},{"pb3"}
},
{
{"pb4"},{"sb0"},{"sb1"},{"sb2"},{"sb3"},{"sb4"},{"sb5"},{"sb6"},{"sb7"},{"pb0"},{"pb1"},{"pb2"},{"pb3"}
},
{
{"pb4"},{"sb0"},{"sb1"},{"sb2"},{"sb3"},{"sb4"},{"sb5"},{"sb6"},{"sb7"},{"pb0"},{"pb1"},{"pb2"},{"pb3"}
},
}

Definition at line 186 of file FPGATrackSimMapMakerAlg.h.

◆ m_planes_default

const std::vector< std::vector< std::vector<std::string> > > FPGATrackSimMapMakerAlg::m_planes_default
private
Initial value:
=
{
{
{"pb4"},{"sb0"},{"sb2"},{"sb3"},{"sb4"},{"sb5"},{"sb6"},{"sb7"}
},
{
{"pb4"},{"sb0"},{"sb2"},{"sb3"},{"sb4"},{"sb5"},{"sb6"},{"sb7"}
},
{
{"-1"},{"-1"},{"-1"},{"-1"},{"-1"},{"-1"},{"-1"},{"-1"}
},
{
{"pb4","pe83+","pe84+","pe85+","pe86+","pe87+","pe88+","pe89+"},{"se5+"},{"se6+"},{"se7+"},{"se8+"},{"se9+"},{"se10+"},{"se11+"}
},
{
{"pe34+","pe12+"},{"pe36+","pe29+"},{"pe8+","pe40+","pe30+"},{"pe56+","pe65+"},{"pe10+","pe6+"},{"pe11+","pe7+"},{"pe31+","pe32+"},{"pe9+","pe53+"}
},
{
{"pb4"},{"sb0"},{"sb2"},{"sb3"},{"sb4"},{"sb5"},{"sb6"},{"sb7"}
},
{
{"pb4"},{"sb0"},{"sb2"},{"sb3"},{"sb4"},{"sb5"},{"sb6"},{"sb7"}
},
{
{"pb4"},{"sb0"},{"sb2"},{"sb3"},{"sb4"},{"sb5"},{"sb6"},{"sb7"}
},
}

Definition at line 116 of file FPGATrackSimMapMakerAlg.h.

◆ m_planes_insideout

const std::vector<std::vector <std::vector <std::string> > > FPGATrackSimMapMakerAlg::m_planes_insideout
private

Definition at line 214 of file FPGATrackSimMapMakerAlg.h.

◆ m_planes_sp

const std::vector< std::vector< std::vector<std::string> > > FPGATrackSimMapMakerAlg::m_planes_sp
private

Definition at line 148 of file FPGATrackSimMapMakerAlg.h.

◆ m_pmap

std::ofstream FPGATrackSimMapMakerAlg::m_pmap
private

Definition at line 261 of file FPGATrackSimMapMakerAlg.h.

◆ m_radfile

std::ofstream FPGATrackSimMapMakerAlg::m_radfile
private

Definition at line 261 of file FPGATrackSimMapMakerAlg.h.

◆ m_radii

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

Definition at line 258 of file FPGATrackSimMapMakerAlg.h.

◆ m_region

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

Definition at line 78 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 88 of file FPGATrackSimMapMakerAlg.h.

◆ m_rmap

std::ofstream FPGATrackSimMapMakerAlg::m_rmap
private

Definition at line 261 of file FPGATrackSimMapMakerAlg.h.

◆ m_sbHits

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

Definition at line 101 of file FPGATrackSimMapMakerAlg.h.

◆ m_sbmax

int FPGATrackSimMapMakerAlg::m_sbmax = -1
private

Definition at line 104 of file FPGATrackSimMapMakerAlg.h.

◆ m_seHits

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

Definition at line 101 of file FPGATrackSimMapMakerAlg.h.

◆ m_semax

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

Definition at line 106 of file FPGATrackSimMapMakerAlg.h.

◆ m_slice2modules

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

Definition at line 97 of file FPGATrackSimMapMakerAlg.h.

◆ m_subrmap

std::ofstream FPGATrackSimMapMakerAlg::m_subrmap
private

Definition at line 261 of file FPGATrackSimMapMakerAlg.h.

◆ m_track2modules

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

Definition at line 97 of file FPGATrackSimMapMakerAlg.h.

◆ m_track2slice

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

Definition at line 98 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 79 of file FPGATrackSimMapMakerAlg.h.

◆ m_usedTracks

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

Definition at line 257 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 259 of file FPGATrackSimMapMakerAlg.h.

◆ m_zedfile

std::ofstream FPGATrackSimMapMakerAlg::m_zedfile
private

Definition at line 261 of file FPGATrackSimMapMakerAlg.h.


The documentation for this class was generated from the following files:
FPGATrackSimMapMakerAlg::m_planes_default
const std::vector< std::vector< std::vector< std::string > > > m_planes_default
Definition: FPGATrackSimMapMakerAlg.h:116
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
FPGATrackSimMapMakerAlg::m_subrmap
std::ofstream m_subrmap
Definition: FPGATrackSimMapMakerAlg.h:261
FPGATrackSimMapMakerAlg::m_rmap
std::ofstream m_rmap
Definition: FPGATrackSimMapMakerAlg.h:261
FPGATrackSimMapMakerAlg::makeSubrmapLines
std::string makeSubrmapLines(std::vector< Module * > const &allmods, SiliconTech det, DetectorZone bec, int max)
Definition: FPGATrackSimMapMakerAlg.cxx:874
FPGATrackSimMapMakerAlg::m_description
Gaudi::Property< std::string > m_description
Definition: FPGATrackSimMapMakerAlg.h:86
ReadCellNoiseFromCoolCompare.s1
s1
Definition: ReadCellNoiseFromCoolCompare.py:378
FPGATrackSimMapMakerAlg::m_track2modules
std::map< int, std::vector< Module * > > m_track2modules
Definition: FPGATrackSimMapMakerAlg.h:97
checkFileSG.line
line
Definition: checkFileSG.py:75
FPGATrackSimEventInputHeader::hits
const std::vector< FPGATrackSimHit > & hits() const
Definition: FPGATrackSimEventInputHeader.h:37
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
TRTCalib_Extractor.hits
hits
Definition: TRTCalib_Extractor.py:35
SiliconTech::strip
@ strip
FPGATrackSimMapMakerAlg::m_outFileName
Gaudi::Property< std::string > m_outFileName
Definition: FPGATrackSimMapMakerAlg.h:80
python.SystemOfUnits.m
int m
Definition: SystemOfUnits.py:91
max
#define max(a, b)
Definition: cfImp.cxx:41
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:77
FPGATrackSimMapMakerAlg::m_monitorFile
std::unique_ptr< TFile > m_monitorFile
Definition: FPGATrackSimMapMakerAlg.h:262
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:699
ParticleGun_SamplingFraction.bec
int bec
Definition: ParticleGun_SamplingFraction.py:89
FPGATrackSimMapMakerAlg::m_planes_sp
const std::vector< std::vector< std::vector< std::string > > > m_planes_sp
Definition: FPGATrackSimMapMakerAlg.h:148
TRTCalib_Extractor.det
det
Definition: TRTCalib_Extractor.py:36
dqt_zlumi_pandas.hname
string hname
Definition: dqt_zlumi_pandas.py:279
DetectorZone::posEndcap
@ posEndcap
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:83
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
FPGATrackSimMapMakerAlg::isOnKeyLayer
bool isOnKeyLayer(int keynum, SiliconTech det, DetectorZone bec, int lyr)
Definition: FPGATrackSimMapMakerAlg.cxx:728
accumulate
bool accumulate(AccumulateMap &map, std::vector< module_t > const &modules, FPGATrackSimMatrixAccumulator const &acc)
Accumulates an accumulator (e.g.
Definition: FPGATrackSimMatrixAccumulator.cxx:22
FPGATrackSimMapMakerAlg::m_globalTrim
Gaudi::Property< float > m_globalTrim
Definition: FPGATrackSimMapMakerAlg.h:85
FPGATrackSimMapMakerAlg::m_sbHits
std::vector< FPGATrackSimHit > m_sbHits
Definition: FPGATrackSimMapMakerAlg.h:101
FPGATrackSimMapMakerAlg::m_det2tech
std::map< std::string, SiliconTech > m_det2tech
Definition: FPGATrackSimMapMakerAlg.h:277
TRTCalib_cfilter.p1
p1
Definition: TRTCalib_cfilter.py:130
PlotCalibFromCool.begin
begin
Definition: PlotCalibFromCool.py:94
skel.it
it
Definition: skel.GENtoEVGEN.py:396
FPGATrackSimMapMakerAlg::findPlane
int findPlane(const std::vector< std::vector< std::string >> &planes, const std::string &test)
Definition: FPGATrackSimMapMakerAlg.cxx:743
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
FPGATrackSimMapMakerAlg::readInputs
StatusCode readInputs(bool &done)
Definition: FPGATrackSimMapMakerAlg.cxx:98
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:45
FPGATrackSimMapMakerAlg::m_eventHeader
FPGATrackSimEventInputHeader m_eventHeader
Definition: FPGATrackSimMapMakerAlg.h:47
FPGATrackSimMapMakerAlg::m_pbHits
std::vector< FPGATrackSimHit > m_pbHits
Definition: FPGATrackSimMapMakerAlg.h:101
FPGATrackSimMapMakerAlg::m_pmap
std::ofstream m_pmap
Definition: FPGATrackSimMapMakerAlg.h:261
TrigInDetValidation_Base.test
test
Definition: TrigInDetValidation_Base.py:147
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
FPGATrackSimMapMakerAlg::m_peHits
std::vector< FPGATrackSimHit > m_peHits
Definition: FPGATrackSimMapMakerAlg.h:101
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
xAOD::unsigned
unsigned
Definition: RingSetConf_v1.cxx:662
FPGATrackSimMapMakerAlg::m_pbmax
int m_pbmax
Definition: FPGATrackSimMapMakerAlg.h:103
FPGATrackSimMapMakerAlg::m_insideout
Gaudi::Property< bool > m_insideout
Definition: FPGATrackSimMapMakerAlg.h:90
XMLtoHeader.count
count
Definition: XMLtoHeader.py:85
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:180
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
FPGATrackSimMapMakerAlg::m_track2slice
std::map< int, int > m_track2slice
Definition: FPGATrackSimMapMakerAlg.h:98
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
module_driven_slicing.key2
key2
Definition: module_driven_slicing.py:159
FPGATrackSimHit
Definition: FPGATrackSimHit.h:41
FPGATrackSimMapMakerAlg::m_planes_insideout
const std::vector< std::vector< std::vector< std::string > > > m_planes_insideout
Definition: FPGATrackSimMapMakerAlg.h:214
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:27
FPGATrackSimMapMakerAlg::m_keylayer2
std::map< std::string, std::set< int > > m_keylayer2
Definition: FPGATrackSimMapMakerAlg.h:252
FPGATrackSimMapMakerAlg::writeRadiiFile
StatusCode writeRadiiFile(std::vector< FPGATrackSimHit > const &allHits)
Definition: FPGATrackSimMapMakerAlg.cxx:532
FPGATrackSimMapMakerAlg::m_key_etamods
std::map< int, int > m_key_etamods
Definition: FPGATrackSimMapMakerAlg.h:255
PixelModuleFeMask_create_db.remove
string remove
Definition: PixelModuleFeMask_create_db.py:83
CaloSwCorrections.etamod
def etamod(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:206
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
FPGATrackSimMapMakerAlg::m_sbmax
int m_sbmax
Definition: FPGATrackSimMapMakerAlg.h:104
FPGATrackSimEventInfo
Definition: FPGATrackSimEventInfo.h:14
TRTCalib_cfilter.p2
p2
Definition: TRTCalib_cfilter.py:131
FPGATrackSimMapMakerAlg::m_usedTracks
std::set< int > m_usedTracks
Definition: FPGATrackSimMapMakerAlg.h:257
python.AthDsoLogger.delimiter
delimiter
Definition: AthDsoLogger.py:71
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
FPGATrackSimMapMakerAlg::m_planes2
const std::vector< std::vector< std::vector< std::string > > > m_planes2
Definition: FPGATrackSimMapMakerAlg.h:186
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:82
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:261
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:755
lumiFormat.i
int i
Definition: lumiFormat.py:85
FPGATrackSimMapMakerAlg::m_etapat
std::ofstream m_etapat
Definition: FPGATrackSimMapMakerAlg.h:261
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
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
FPGATrackSimMapMakerAlg::m_radii
std::vector< std::vector< std::vector< float > > > m_radii
Definition: FPGATrackSimMapMakerAlg.h:258
FPGATrackSimMapMakerAlg::m_drawSlices
Gaudi::Property< bool > m_drawSlices
Definition: FPGATrackSimMapMakerAlg.h:89
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
FPGATrackSimMapMakerAlg::m_keylayer
std::map< std::string, std::set< int > > m_keylayer
Definition: FPGATrackSimMapMakerAlg.h:251
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:135
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:476
FPGATrackSimMapMakerAlg::m_nSlices
Gaudi::Property< int > m_nSlices
Definition: FPGATrackSimMapMakerAlg.h:83
FPGATrackSimMapMakerAlg::m_remapModules
Gaudi::Property< bool > m_remapModules
Definition: FPGATrackSimMapMakerAlg.h:88
FPGATrackSimEventInputHeader::event
FPGATrackSimEventInfo const & event() const
Definition: FPGATrackSimEventInputHeader.h:33
FPGATrackSimMapMakerAlg::m_bec2zone
std::map< std::string, DetectorZone > m_bec2zone
Definition: FPGATrackSimMapMakerAlg.h:278
min
#define min(a, b)
Definition: cfImp.cxx:40
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:81
FPGATrackSimMapMakerAlg::m_key_etamods2
std::set< int > m_key_etamods2
Definition: FPGATrackSimMapMakerAlg.h:256
python.draw_obj.zone
def zone(nx, ny)
Definition: draw_obj.py:288
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
FPGATrackSimMapMakerAlg::writeMedianZFile
StatusCode writeMedianZFile(std::vector< FPGATrackSimHit > const &allHits)
Definition: FPGATrackSimMapMakerAlg.cxx:601
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
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:259
FPGATrackSimMapMakerAlg::m_key2
bool m_key2
Definition: FPGATrackSimMapMakerAlg.h:254
FPGATrackSimMapMakerAlg::m_trim
Gaudi::Property< float > m_trim
Definition: FPGATrackSimMapMakerAlg.h:79
FPGATrackSimMapMakerAlg::m_doSpacePoints
Gaudi::Property< bool > m_doSpacePoints
Definition: FPGATrackSimMapMakerAlg.h:84
FPGATrackSimMapMakerAlg::m_geoTag
Gaudi::Property< std::string > m_geoTag
Definition: FPGATrackSimMapMakerAlg.h:87
AthAlgorithm::m_extendedExtraObjects
DataObjIDColl m_extendedExtraObjects
Definition: AthAlgorithm.h:79
DetectorZone::negEndcap
@ negEndcap
FPGATrackSimMapMakerAlg::m_seHits
std::vector< FPGATrackSimHit > m_seHits
Definition: FPGATrackSimMapMakerAlg.h:101
FPGATrackSimMapMakerAlg::m_modules
std::map< FPGATrackSimModuleId, Module > m_modules
Definition: FPGATrackSimMapMakerAlg.h:96
a
TList * a
Definition: liststreamerinfos.cxx:10
DetectorZone
DetectorZone
Definition: FPGATrackSimTypes.h:28
FPGATrackSimMapMakerAlg::m_moduleRelabel
FPGATrackSimModuleRelabel * m_moduleRelabel
Definition: FPGATrackSimMapMakerAlg.h:93
FPGATrackSimMapMakerAlg::m_semax
std::vector< int > m_semax
Definition: FPGATrackSimMapMakerAlg.h:106
h
FPGATrackSimMapMakerAlg::m_pemax
std::vector< int > m_pemax
Definition: FPGATrackSimMapMakerAlg.h:105
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
FPGATrackSimMapMakerAlg::m_radfile
std::ofstream m_radfile
Definition: FPGATrackSimMapMakerAlg.h:261
FPGATrackSimMapMakerAlg::writeSubrmap
StatusCode writeSubrmap(std::vector< FPGATrackSimHit > const &allHits)
Definition: FPGATrackSimMapMakerAlg.cxx:255
ReadCellNoiseFromCoolCompare.s2
s2
Definition: ReadCellNoiseFromCoolCompare.py:379
FPGATrackSimMapMakerAlg::m_region
Gaudi::Property< int > m_region
Definition: FPGATrackSimMapMakerAlg.h:78
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:623
AthAlgorithm::AthAlgorithm
AthAlgorithm()
Default constructor:
dot
Definition: dot.py:1
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
LHEF::Writer
Pythia8::Writer Writer
Definition: Prophecy4fMerger.cxx:12
FPGATrackSimMapMakerAlg::m_allHits
std::vector< FPGATrackSimHit > m_allHits
Definition: FPGATrackSimMapMakerAlg.h:101
FPGATrackSimEventInputHeader::reset
void reset()
Definition: FPGATrackSimEventInputHeader.cxx:14
FPGATrackSimMapMakerAlg::parseKeyString
void parseKeyString()
Definition: FPGATrackSimMapMakerAlg.cxx:780
FPGATrackSimMapMakerAlg::m_slice2modules
std::map< int, std::vector< Module * > > m_slice2modules
Definition: FPGATrackSimMapMakerAlg.h:97
FPGATrackSimModuleRelabel::remap
bool remap(FPGATrackSimHit &hit) const
Definition: FPGATrackSimModuleRelabel.cxx:25
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
readCCLHist.float
float
Definition: readCCLHist.py:83
EgEfficiencyCorr_testFixedInput.etas
list etas
Definition: EgEfficiencyCorr_testFixedInput.py:9
SiliconTech::pixel
@ pixel
fitman.k
k
Definition: fitman.py:528
FPGATrackSimMapMakerAlg::m_planes
const std::vector< std::vector< std::vector< std::string > > > * m_planes
Definition: FPGATrackSimMapMakerAlg.h:115
ServiceHandle< ICondSvc >
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
FPGATrackSimModuleRelabel
Definition: FPGATrackSimModuleRelabel.h:30
module_driven_slicing.key1
key1
Definition: module_driven_slicing.py:158