ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Public Member Functions | Private Member Functions | Private Attributes | List of all members
RegionSelectionSvc Class Reference

#include <RegionSelectionSvc.h>

Inheritance diagram for RegionSelectionSvc:
Collaboration diagram for RegionSelectionSvc:

Public Member Functions

 RegionSelectionSvc (const std::string &name, ISvcLocator *svc_locator)
 contructor More...
 
virtual ~RegionSelectionSvc ()
 destructor More...
 
virtual StatusCode initialize () override
 initialize More...
 
void Print (std::ostream &os) const
 debug print More...
 
bool isInRegion (const MuonCalib::MuonFixedId &id) const
 return true if id is in selected region More...
 
const std::string & GetRegionSelection () const
 get region selection More...
 
const std::vector< MuonCalib ::NtupleStationId > & GetStationsInRegions () const
 get stations/multilayers in region More...
 
int AddRegionNtuples (const std::string &infile, TChain *chain)
 add region ntuples which are relevant for this region to TChain More...
 
int AddRegionNtuples (const std::string &infile, TChain *chain, std::list< std::string > &dirnames)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Private Member Functions

void search_chambers_in_region ()
 
bool ProcessString (const std::string &input)
 process string More...
 
void print_list_of_selected_chambers () const
 print a list of selected chambers - debug function More...
 
void convert_to_tower (int station, int phi, int eta, std::vector< int > &tower) const
 convert station, eta, phi in tower vector More...
 

Private Attributes

Gaudi::Property< std::string > m_region_string {this, "Region", ""}
 region string - job option More...
 
Gaudi::Property< bool > m_print_list_of_selected_chambers {this, "PrintList", false}
 print list of selected chambers if set to true - job option More...
 
std::unique_ptr< MuonCalib ::RegionSelectorBase > m_master_region
 master region More...
 
std::vector< MuonCalib::NtupleStationIdm_stations_in_region
 chambers/mutlilayers in calibraition region More...
 
std::set< MuonCalib::NtupleStationIdm_unique_chambers
 
const MuonGM::MuonDetectorManagerm_detMgr {nullptr}
 
ServiceHandle< Muon::IMuonIdHelperSvcm_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}
 search for chambers and multilayers in selected region towers in selected region More...
 
ToolHandle< MuonCalib::IIdToFixedIdToolm_idToFixedIdTool {this, "IdToFixedIdTool", "MuonCalib::IdToFixedIdTool"}
 

Detailed Description

Seolect calibration region

Author
rausc.nosp@m.her@.nosp@m.cern..nosp@m.ch

Definition at line 35 of file RegionSelectionSvc.h.

Constructor & Destructor Documentation

◆ RegionSelectionSvc()

RegionSelectionSvc::RegionSelectionSvc ( const std::string &  name,
ISvcLocator *  svc_locator 
)

contructor

Definition at line 29 of file RegionSelectionSvc.cxx.

29 : AthService(name, svc_locator) {}

◆ ~RegionSelectionSvc()

RegionSelectionSvc::~RegionSelectionSvc ( )
virtualdefault

destructor

Member Function Documentation

◆ AddRegionNtuples() [1/2]

int RegionSelectionSvc::AddRegionNtuples ( const std::string &  infile,
TChain *  chain 
)

add region ntuples which are relevant for this region to TChain

Definition at line 55 of file RegionSelectionSvc.cxx.

55  {
56  std::list<std::string> dirnames;
57  return AddRegionNtuples(infile, chain, dirnames);
58 }

◆ AddRegionNtuples() [2/2]

int RegionSelectionSvc::AddRegionNtuples ( const std::string &  infile,
TChain *  chain,
std::list< std::string > &  dirnames 
)

Definition at line 59 of file RegionSelectionSvc.cxx.

59  {
60  int n_trees(0);
61  if (dirnames.empty()) {
62  // open file
63  std::unique_ptr<TFile> inf{TFile::Open(infile.c_str(), "READ")};
64  TIter nextkey(inf->GetListOfKeys());
65  TKey *key;
66  // take a list here because erase does not invalidate iterators
67  while ((key = (TKey *)nextkey())) { dirnames.push_back(key->GetName()); }
68  }
69  // loop over found ntuples and selected region
70  for (std::set<MuonCalib::NtupleStationId>::const_iterator it = m_unique_chambers.begin(); it != m_unique_chambers.end(); ++it)
71  for (std::list<std::string>::iterator nt_it = dirnames.begin(); nt_it != dirnames.end(); ++nt_it) {
72  // truncate region name
73  std::string regname(it->regionId(), 0, nt_it->size());
74  if (regname == (*nt_it)) {
75  chain->AddFile(infile.c_str(), TChain::kBigNumber, ((*nt_it) + "/" + "Segments").c_str());
76  std::list<std::string>::iterator new_it = nt_it;
77  --new_it;
78  dirnames.erase(nt_it);
79  nt_it = new_it;
80  ++n_trees;
81  }
82  }
83  return n_trees;
84 }

◆ convert_to_tower()

void RegionSelectionSvc::convert_to_tower ( int  station,
int  phi,
int  eta,
std::vector< int > &  tower 
) const
private

convert station, eta, phi in tower vector

◆ GetRegionSelection()

const std::string & RegionSelectionSvc::GetRegionSelection ( ) const

get region selection

Definition at line 53 of file RegionSelectionSvc.cxx.

53 { return m_region_string; }

◆ GetStationsInRegions()

const std::vector< MuonCalib::NtupleStationId > & RegionSelectionSvc::GetStationsInRegions ( ) const

get stations/multilayers in region

Definition at line 54 of file RegionSelectionSvc.cxx.

54 { return m_stations_in_region; }

◆ initialize()

StatusCode RegionSelectionSvc::initialize ( )
overridevirtual

initialize

Definition at line 31 of file RegionSelectionSvc.cxx.

31  {
32  ATH_MSG_INFO("initialize RegionSelectionSvc");
33 
34  if (!ProcessString(m_region_string)) return StatusCode::FAILURE;
35 
36  // detector stre - id to fixed id ...
37  SmartIF<StoreGateSvc> detStore{service("DetectorStore")};
38  ATH_CHECK(detStore.isValid());
39  ATH_MSG_DEBUG("Retrieved DetectorStore");
40  ATH_CHECK(m_idHelperSvc.retrieve());
41  ATH_CHECK(detStore->retrieve(m_detMgr));
42  ATH_CHECK(m_idToFixedIdTool.retrieve());
43  ATH_MSG_INFO("Retrieved " << m_idToFixedIdTool);
44 
47 
48  return StatusCode::SUCCESS;
49 }

◆ isInRegion()

bool RegionSelectionSvc::isInRegion ( const MuonCalib::MuonFixedId id) const

return true if id is in selected region

Definition at line 51 of file RegionSelectionSvc.cxx.

51 { return m_master_region->Result(id); }

◆ msg() [1/2]

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

MsgStream& AthCommonMsg< Service >::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< Service >::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

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

◆ Print()

void RegionSelectionSvc::Print ( std::ostream &  os) const

debug print

Definition at line 86 of file RegionSelectionSvc.cxx.

86  {
87  if (!m_master_region) {
88  os << "ERROR";
89  return;
90  }
91  m_master_region->Print(os);
92 }

◆ print_list_of_selected_chambers()

void RegionSelectionSvc::print_list_of_selected_chambers ( ) const
private

print a list of selected chambers - debug function

Definition at line 137 of file RegionSelectionSvc.cxx.

137  {
138  ATH_MSG_INFO("Selected regions: " << m_stations_in_region.size());
139  msg(MSG::INFO) << "Selected regions: ";
140  for (std::vector<MuonCalib::NtupleStationId>::const_iterator it = m_stations_in_region.begin(); it != m_stations_in_region.end();
141  ++it) {
142  msg(MSG::INFO) << " " << it->regionId();
143  }
144  msg(MSG::INFO) << endmsg;
145 }

◆ ProcessString()

bool RegionSelectionSvc::ProcessString ( const std::string &  input)
private

process string

Definition at line 132 of file RegionSelectionSvc.cxx.

132  {
133  m_master_region = RegionSelectorBase::GetRegion(input);
134  return (m_master_region != nullptr);
135 }

◆ search_chambers_in_region()

void RegionSelectionSvc::search_chambers_in_region ( )
private

Definition at line 94 of file RegionSelectionSvc.cxx.

94  {
95  MdtIdHelper::const_id_iterator it = m_idHelperSvc->mdtIdHelper().module_begin();
96  MdtIdHelper::const_id_iterator it_end = m_idHelperSvc->mdtIdHelper().module_end();
97  for (; it != it_end; ++it) {
98  const MuonGM::MdtReadoutElement *detEl = m_detMgr->getMdtReadoutElement(m_idHelperSvc->mdtIdHelper().channelID(*it, 1, 1, 1));
99  if (!detEl) continue;
100  // get number of mls;
101  int n_mls = m_idHelperSvc->mdtIdHelper().numberOfMultilayers(*it);
102  // fixed id
103  MuonCalib::MuonFixedId fixed_id(m_idToFixedIdTool->idToFixedId(*it));
104  std::vector<MuonCalib::NtupleStationId> the_ids;
105  for (int i = 1; i <= n_mls; i++) {
106  fixed_id.setMdtMultilayer(i);
107  if (isInRegion(fixed_id)) {
108  NtupleStationId the_id(fixed_id);
109  the_ids.push_back(the_id);
110  }
111  }
112  // all multilayers are in the region - inser the whole station
113  if (static_cast<int>(the_ids.size()) == n_mls) {
114  NtupleStationId full_station(fixed_id);
115  full_station.SetMultilayer(0);
116  m_stations_in_region.push_back(full_station);
117  } else {
118  for (std::vector<MuonCalib::NtupleStationId>::iterator it2 = the_ids.begin(); it2 != the_ids.end(); ++it2) {
119  m_stations_in_region.push_back(*it2);
120  }
121  }
122  }
123  // create a set of chambers (not multilayers)
124  std::vector<int> tower(3);
126  MuonCalib::NtupleStationId station(*it2);
127  station.SetMultilayer(0);
128  m_unique_chambers.insert(station);
129  }
130 }

Member Data Documentation

◆ m_detMgr

const MuonGM::MuonDetectorManager* RegionSelectionSvc::m_detMgr {nullptr}
private

Definition at line 65 of file RegionSelectionSvc.h.

◆ m_idHelperSvc

ServiceHandle<Muon::IMuonIdHelperSvc> RegionSelectionSvc::m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}
private

search for chambers and multilayers in selected region towers in selected region

Definition at line 67 of file RegionSelectionSvc.h.

◆ m_idToFixedIdTool

ToolHandle<MuonCalib::IIdToFixedIdTool> RegionSelectionSvc::m_idToFixedIdTool {this, "IdToFixedIdTool", "MuonCalib::IdToFixedIdTool"}
private

Definition at line 68 of file RegionSelectionSvc.h.

◆ m_master_region

std::unique_ptr<MuonCalib ::RegionSelectorBase> RegionSelectionSvc::m_master_region
private

master region

Definition at line 61 of file RegionSelectionSvc.h.

◆ m_print_list_of_selected_chambers

Gaudi::Property<bool> RegionSelectionSvc::m_print_list_of_selected_chambers {this, "PrintList", false}
private

print list of selected chambers if set to true - job option

Definition at line 59 of file RegionSelectionSvc.h.

◆ m_region_string

Gaudi::Property<std::string> RegionSelectionSvc::m_region_string {this, "Region", ""}
private

region string - job option

Definition at line 57 of file RegionSelectionSvc.h.

◆ m_stations_in_region

std::vector<MuonCalib::NtupleStationId> RegionSelectionSvc::m_stations_in_region
private

chambers/mutlilayers in calibraition region

Definition at line 63 of file RegionSelectionSvc.h.

◆ m_unique_chambers

std::set<MuonCalib::NtupleStationId> RegionSelectionSvc::m_unique_chambers
private

Definition at line 64 of file RegionSelectionSvc.h.


The documentation for this class was generated from the following files:
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
AthService::AthService
AthService()
runLayerRecalibration.chain
chain
Definition: runLayerRecalibration.py:175
run.infile
string infile
Definition: run.py:13
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
RegionSelectionSvc::m_region_string
Gaudi::Property< std::string > m_region_string
region string - job option
Definition: RegionSelectionSvc.h:57
MuonCalib::NtupleStationId
Definition: NtupleStationId.h:36
RegionSelectionSvc::m_idToFixedIdTool
ToolHandle< MuonCalib::IIdToFixedIdTool > m_idToFixedIdTool
Definition: RegionSelectionSvc.h:68
skel.it
it
Definition: skel.GENtoEVGEN.py:407
RegionSelectionSvc::m_detMgr
const MuonGM::MuonDetectorManager * m_detMgr
Definition: RegionSelectionSvc.h:65
RegionSelectionSvc::ProcessString
bool ProcessString(const std::string &input)
process string
Definition: RegionSelectionSvc.cxx:132
inf
TStreamerInfo * inf
Definition: liststreamerinfos.cxx:12
RegionSelectionSvc::m_stations_in_region
std::vector< MuonCalib::NtupleStationId > m_stations_in_region
chambers/mutlilayers in calibraition region
Definition: RegionSelectionSvc.h:63
RegionSelectionSvc::isInRegion
bool isInRegion(const MuonCalib::MuonFixedId &id) const
return true if id is in selected region
Definition: RegionSelectionSvc.cxx:51
MuonGM::MuonDetectorManager::getMdtReadoutElement
const MdtReadoutElement * getMdtReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonDetectorManager.cxx:204
MuonGM::MdtReadoutElement
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MdtReadoutElement.h:51
lumiFormat.i
int i
Definition: lumiFormat.py:85
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
PlotPulseshapeFromCool.input
input
Definition: PlotPulseshapeFromCool.py:106
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
RegionSelectionSvc::search_chambers_in_region
void search_chambers_in_region()
Definition: RegionSelectionSvc.cxx:94
ReadFromCoolCompare.os
os
Definition: ReadFromCoolCompare.py:231
RegionSelectionSvc::print_list_of_selected_chambers
void print_list_of_selected_chambers() const
print a list of selected chambers - debug function
Definition: RegionSelectionSvc.cxx:137
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
MuonCalib::MuonFixedId
Definition: MuonFixedId.h:50
RegionSelectionSvc::m_print_list_of_selected_chambers
Gaudi::Property< bool > m_print_list_of_selected_chambers
print list of selected chambers if set to true - job option
Definition: RegionSelectionSvc.h:59
RegionSelectionSvc::m_unique_chambers
std::set< MuonCalib::NtupleStationId > m_unique_chambers
Definition: RegionSelectionSvc.h:64
RegionSelectionSvc::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
search for chambers and multilayers in selected region towers in selected region
Definition: RegionSelectionSvc.h:67
AthCommonMsg< Service >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
MuonIdHelper::const_id_iterator
std::vector< Identifier >::const_iterator const_id_iterator
Definition: MuonIdHelper.h:143
RegionSelectionSvc::m_master_region
std::unique_ptr< MuonCalib ::RegionSelectorBase > m_master_region
master region
Definition: RegionSelectionSvc.h:61
RegionSelectionSvc::AddRegionNtuples
int AddRegionNtuples(const std::string &infile, TChain *chain)
add region ntuples which are relevant for this region to TChain
Definition: RegionSelectionSvc.cxx:55
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37