Iguana 1.0.0
Implementation Guardian of Analysis Algorithms
Loading...
Searching...
No Matches
iguana::clas12::SectorFinder Class Reference

#include <Algorithm.h>

Detailed Description

Algorithm: Find the sector for all rows in REC::Particle

Input and Output Banks:
See Run function(s) for the banks that are processed by this algorithm.
Type: Creator
Configuration Options:
YAML configuration, which includes the default option values:
clas12::SectorFinder:
### use the default banks for both charged/neutral particles
bank_charged: default
bank_neutral: default
### alternatively, use custom banks; for example:
# bank_charged: default # default bank for charged particles
# bank_neutral: REC::Calorimeter # custom bank for neutral particles
Table of options and descriptions:
NameTypeDescription
bank_charged string if not default, use this bank for sector finding of charged particles
bank_neutral string if not default, use this bank for sector finding of neutral particles

If bank_charged and/or bank_neutral is default, then all of the following banks are needed, in addition to REC::Particle:

  • REC::Track
  • REC::Calorimeter
  • REC::Scintillator

Otherwise only the bank(s) specified by bank_charged and bank_neutral is/are needed, if both of them are non-default.

If the sector cannot be determined, the value UNKNOWN_SECTOR will be used instead.

The action function ::GetStandardSector identifies the sector(s) using these banks in a priority order, whereas the action function ::GetSector uses a single bank's data. Note: rows that have been filtered out of REC::Particle will still have their sectors determined.

Definition at line 29 of file Algorithm.h.

Public Member Functions

void GetListsSectorPindex (hipo::bank const &bank, std::vector< int > &sectors, std::vector< int > &pindices) const
int GetSector (std::vector< int > const &sectors, std::vector< int > const &pindices, int const &pindex_particle) const
 Action Function: for a given particle with index pindex_particle, get its sector from a detector bank's list of sectors and pindices (both must be ordered in the same way)
int GetStandardSector (std::vector< int > const &sectors_track, std::vector< int > const &pindices_track, std::vector< int > const &sectors_cal, std::vector< int > const &pindices_cal, std::vector< int > const &sectors_scint, std::vector< int > const &pindices_scint, int const &pindex_particle) const
 Action Function: for a given particle with index pindex_particle, get its sector from using the standard method
std::vector< int > GetStandardSector (std::vector< int > const &sectors_track, std::vector< int > const &pindices_track, std::vector< int > const &sectors_cal, std::vector< int > const &pindices_cal, std::vector< int > const &sectors_scint, std::vector< int > const &pindices_scint, std::vector< int > const &pindices_particle) const
 Action Function: get sectors for all particles, using the standard method
bool Run (hipo::bank const &particleBank, hipo::bank const &trackBank, hipo::bank const &calBank, hipo::bank const &scintBank, hipo::bank &resultBank) const
 Run Function: Process an event's hipo::bank objects
bool Run (hipo::banklist &banks) const override
 Run Function: Process an event's hipo::banklist
bool RunWithCustomBanks (hipo::bank const &particleBank, hipo::bank const &userChargedBank, hipo::bank const &userNeutralBank, hipo::bank &resultBank) const
 Run Function: Process an event's hipo::bank objects
bool RunWithCustomChargedBank (hipo::bank const &particleBank, hipo::bank const &trackBank, hipo::bank const &calBank, hipo::bank const &scintBank, hipo::bank const &userChargedBank, hipo::bank &resultBank) const
 Run Function: Process an event's hipo::bank objects
bool RunWithCustomNeutralBank (hipo::bank const &particleBank, hipo::bank const &trackBank, hipo::bank const &calBank, hipo::bank const &scintBank, hipo::bank const &userNeutralBank, hipo::bank &resultBank) const
 Run Function: Process an event's hipo::bank objects
void Start (hipo::banklist &banks) override
 Initialize this algorithm before any events are processed, with the intent to process banks.
void Stop () override
 Finalize this algorithm after all events are processed.
Public Member Functions inherited from iguana::Algorithm
 Algorithm (std::string_view name)
std::unique_ptr< YAMLReader > const & GetConfig () const
hipo::bank GetCreatedBank (std::string const &bank_name="") const noexcept(false)
std::string GetCreatedBankName () const noexcept(false)
std::vector< std::string > GetCreatedBankNames () const noexcept(false)
hipo::schema GetCreatedBankSchema (std::string const &bank_name="") const noexcept(false)
template<typename OPTION_TYPE>
OPTION_TYPE GetOptionScalar (std::string const &key, YAMLReader::node_path_t node_path={}) const
template<typename OPTION_TYPE>
std::set< OPTION_TYPE > GetOptionSet (std::string const &key, YAMLReader::node_path_t node_path={}) const
template<typename OPTION_TYPE>
std::vector< OPTION_TYPE > GetOptionVector (std::string const &key, YAMLReader::node_path_t node_path={}) const
void SetConfig (std::unique_ptr< YAMLReader > &&yaml_config)
void SetConfigDirectory (std::string const &name)
void SetConfigFile (std::string const &name)
void SetName (std::string_view name)
template<typename OPTION_TYPE>
OPTION_TYPE SetOption (std::string const &key, const OPTION_TYPE val)
void Start ()
 Initialize this algorithm before any events are processed, with the intent to process bank rows rather than full banks;.
Public Member Functions inherited from iguana::Object
std::unique_ptr< Logger > & GetLog ()
std::string GetName () const
std::unique_ptr< Logger > & Log ()
 Object (std::string_view name="", Logger::Level lev=Logger::DEFAULT_LEVEL)
void SetLogLevel (Logger::Level const lev)
void SetLogLevel (std::string_view lev)
void SetName (std::string_view name)

Static Public Attributes

static int const UNKNOWN_SECTOR = -1
 if this algorithm cannot determine the sector, this value will be used

Additional Inherited Members

Protected Member Functions inherited from iguana::Algorithm
hipo::schema CreateBank (hipo::banklist &banks, hipo::banklist::size_type &bank_idx, std::string const &bank_name) const noexcept(false)
hipo::bank & GetBank (hipo::banklist &banks, hipo::banklist::size_type const idx, std::string const &expected_bank_name="") const noexcept(false)
hipo::banklist::size_type GetBankIndex (hipo::banklist &banks, std::string const &bank_name) const noexcept(false)
template<typename OPTION_TYPE>
std::optional< OPTION_TYPE > GetCachedOption (std::string const &key) const
void ParseYAMLConfig ()
 Parse YAML configuration files. Sets m_yaml_config.
void ShowBank (hipo::bank const &bank, std::string_view message="", Logger::Level const level=Logger::trace) const
void ShowBanks (hipo::banklist const &banks, std::string_view message="", Logger::Level const level=Logger::trace) const
void ThrowSinceRenamed (std::string const &new_name, std::string const &version) const noexcept(false)
Protected Attributes inherited from iguana::Algorithm
std::string m_class_name
 Class name of this algorithm.
std::string m_default_config_file
 Default configuration file name.
std::mutex m_mutex
 A mutex for this algorithm.
bool m_rows_only
 If true, algorithm can only operate on bank rows; Algorithm::GetBank, and therefore Algorithm::Run, cannot be called.
std::string o_user_config_dir
std::string o_user_config_file
Protected Attributes inherited from iguana::Object
std::unique_ptr< Loggerm_log
 Logger instance for this object
std::string m_name
 The name of this object.
Inheritance diagram for iguana::clas12::SectorFinder:
Inheritance graph

Member Function Documentation

◆ GetListsSectorPindex()

void iguana::clas12::SectorFinder::GetListsSectorPindex ( hipo::bank const & bank,
std::vector< int > & sectors,
std::vector< int > & pindices ) const

fill lists of sectors and pindices present in the input bank

Note
this is not an action function, but here for convenience
Parameters
bankbank from which to get lists of sectors and pindices
sectorslist to fill with sectors in the bank
pindiceslist to fill with pindices in the bank

◆ GetSector()

int iguana::clas12::SectorFinder::GetSector ( std::vector< int > const & sectors,
std::vector< int > const & pindices,
int const & pindex_particle ) const

Action Function: for a given particle with index pindex_particle, get its sector from a detector bank's list of sectors and pindices (both must be ordered in the same way)

Function Type
scalar creator
Note
this is done instead of finding the pindex in the bank directly, to have an action function
Example
//... Initialise algorithms & banks ...
//For each event, do:
std::vector<int> sectors;
std::vector<int> pindices
//bank is a hipo::bank object from which we want to get the sectors
//for example the bank object related to REC::Calorimeter
for(auto const& row : bank.getRowList()) {
int det=bank.getInt("detector",row);
//NB: you should check you read from an FD detector
// e.g. det 7 is the ECAL (see/use `iguana::DetectorType` enum)
if(det==7){
sectors.push_back(bank.getInt("sector", row));
pindices.push_back(bank.getShort("pindex", row));
}
}
//partbank is a hipo::bank object related to REC::Particle
//algo_sector_finder is the iguana::clas12::SectorFinder object
for(auto const& row : partbank.getRowList()) {
int sector = algo_sector_finder.GetSector(sectors, pindices, row);
}
See also
::GetStandardSector, which calls this method for detectors in a priority order
Parameters
sectorslist of sectors in a detector bank
pindiceslist of pindices in a detector bank
pindex_particleindex in REC::Particle bank for which to get sector
Returns
sector for pindex_particle in list, UNKNOWN_SECTOR if pindex_particle not in inputted list

◆ GetStandardSector() [1/2]

int iguana::clas12::SectorFinder::GetStandardSector ( std::vector< int > const & sectors_track,
std::vector< int > const & pindices_track,
std::vector< int > const & sectors_cal,
std::vector< int > const & pindices_cal,
std::vector< int > const & sectors_scint,
std::vector< int > const & pindices_scint,
int const & pindex_particle ) const

Action Function: for a given particle with index pindex_particle, get its sector from using the standard method

Function Type
scalar creator

The following detectors' banks will be searched in order, and once the sector is found for any detector, it is returned:

  • REC::Track, using sectors_track and pindices_track
  • REC::Calorimeter, using sectors_cal and pindices_cal
  • REC::Scintillator, using sectors_scint and pindices_scint
See also
::GetSector, which exemplifies using only one bank's lists of sectors and pindices
Parameters
sectors_tracklist of sectors in REC::Track
pindices_tracklist of pindices in REC::Track
sectors_callist of sectors in REC::Calorimeter
pindices_callist of pindices in REC::Calorimeter
sectors_scintlist of sectors in REC::Scintillator
pindices_scintlist of pindices in REC::Scintillator
pindex_particleindex in REC::Particle bank for which to get sector
Returns
sector for pindex_particle in lists, UNKNOWN_SECTOR if pindex_particle not any of the inputted lists

◆ GetStandardSector() [2/2]

std::vector< int > iguana::clas12::SectorFinder::GetStandardSector ( std::vector< int > const & sectors_track,
std::vector< int > const & pindices_track,
std::vector< int > const & sectors_cal,
std::vector< int > const & pindices_cal,
std::vector< int > const & sectors_scint,
std::vector< int > const & pindices_scint,
std::vector< int > const & pindices_particle ) const

Action Function: get sectors for all particles, using the standard method

Function Type
vector creator
Note
This vector action function overloads a corresponding scalar action function; see that scalar action function for more documentation.
See also
::GetSector, which exemplifies using only one bank's lists of sectors and pindices
Parameters
sectors_tracklist of sectors in REC::Track
pindices_tracklist of pindices in REC::Track
sectors_callist of sectors in REC::Calorimeter
pindices_callist of pindices in REC::Calorimeter
sectors_scintlist of sectors in REC::Scintillator
pindices_scintlist of pindices in REC::Scintillator
pindices_particlethe REC::Particle list of pindices
Returns
list of sectors for each particle with pindex in pindices_particle

◆ Run() [1/2]

bool iguana::clas12::SectorFinder::Run ( hipo::bank const & particleBank,
hipo::bank const & trackBank,
hipo::bank const & calBank,
hipo::bank const & scintBank,
hipo::bank & resultBank ) const
inline

Run Function: Process an event's hipo::bank objects

The parameter list explains which banks are input ("in"), output ("out"), or both ("in,out").

uses track, calorimeter, and scintillator banks for both charged and neutral particles

See also
this algorithm contains multiple run functions, for if you prefer to use other banks
Parameters
[in]particleBankREC::Particle
[in]trackBankREC::Track
[in]calBankREC::Calorimeter
[in]scintBankREC::Scintillator
[out]resultBankthe output REC::Particle::Sector bank
Returns
true, i.e., this Run function does not provide an event-level filter

Definition at line 52 of file Algorithm.h.

◆ Run() [2/2]

bool iguana::clas12::SectorFinder::Run ( hipo::banklist & banks) const
overridevirtual

Run Function: Process an event's hipo::banklist

Parameters
banksthe list of banks to process
Returns
a boolean value, which is typically used to decide whether or not to continue analyzing an event, i.e., it can be used as an event-level filter; not all algorithms use or need this feature; see the algorithm's more specialized Run functions, which have hipo::bank parameters
See also
Specialized Run function(s) above/below; they take individual hipo::bank objects as parameters, and their documentation explains which banks are used by this algorithm and how.

Implements iguana::Algorithm.

◆ RunWithCustomBanks()

bool iguana::clas12::SectorFinder::RunWithCustomBanks ( hipo::bank const & particleBank,
hipo::bank const & userChargedBank,
hipo::bank const & userNeutralBank,
hipo::bank & resultBank ) const
inline

Run Function: Process an event's hipo::bank objects

The parameter list explains which banks are input ("in"), output ("out"), or both ("in,out").

uses custom banks for both charged and neutral particles

See also
this algorithm contains multiple run functions, for if you prefer to use other banks
Parameters
[in]particleBankREC::Particle
[in]userChargedBankcustom bank used to obtain charged-particles' sectors
[in]userNeutralBankcustom bank used to obtain neutral-particles' sectors
[out]resultBankthe output REC::Particle::Sector bank
Returns
true, i.e., this Run function does not provide an event-level filter

Definition at line 112 of file Algorithm.h.

◆ RunWithCustomChargedBank()

bool iguana::clas12::SectorFinder::RunWithCustomChargedBank ( hipo::bank const & particleBank,
hipo::bank const & trackBank,
hipo::bank const & calBank,
hipo::bank const & scintBank,
hipo::bank const & userChargedBank,
hipo::bank & resultBank ) const
inline

Run Function: Process an event's hipo::bank objects

The parameter list explains which banks are input ("in"), output ("out"), or both ("in,out").

uses track, calorimeter, and scintillator banks for neutral particles, and a custom bank for charged particles

See also
this algorithm contains multiple run functions, for if you prefer to use other banks
Parameters
[in]particleBankREC::Particle
[in]trackBankREC::Track
[in]calBankREC::Calorimeter
[in]scintBankREC::Scintillator
[in]userChargedBankcustom bank used to obtain charged-particles' sectors
[out]resultBankthe output REC::Particle::Sector bank
Returns
true, i.e., this Run function does not provide an event-level filter

Definition at line 72 of file Algorithm.h.

◆ RunWithCustomNeutralBank()

bool iguana::clas12::SectorFinder::RunWithCustomNeutralBank ( hipo::bank const & particleBank,
hipo::bank const & trackBank,
hipo::bank const & calBank,
hipo::bank const & scintBank,
hipo::bank const & userNeutralBank,
hipo::bank & resultBank ) const
inline

Run Function: Process an event's hipo::bank objects

The parameter list explains which banks are input ("in"), output ("out"), or both ("in,out").

uses track, calorimeter, and scintillator banks for charged particles, and a custom bank for neutral particles

See also
this algorithm contains multiple run functions, for if you prefer to use other banks
Parameters
[in]particleBankREC::Particle
[in]trackBankREC::Track
[in]calBankREC::Calorimeter
[in]scintBankREC::Scintillator
[in]userNeutralBankcustom bank used to obtain neutral-particles' sectors
[out]resultBankthe output REC::Particle::Sector bank
Returns
true, i.e., this Run function does not provide an event-level filter

Definition at line 93 of file Algorithm.h.

◆ Start()

void iguana::clas12::SectorFinder::Start ( hipo::banklist & banks)
overridevirtual

Initialize this algorithm before any events are processed, with the intent to process banks.

use this method if you intend to use Algorithm::Run.

Parameters
banksthe list of banks this algorithm will use, so that Algorithm::Run can cache the indices of the banks that it needs

Implements iguana::Algorithm.

◆ Stop()

void iguana::clas12::SectorFinder::Stop ( )
overridevirtual

Finalize this algorithm after all events are processed.

Implements iguana::Algorithm.

Member Data Documentation

◆ UNKNOWN_SECTOR

int const iguana::clas12::SectorFinder::UNKNOWN_SECTOR = -1
static

if this algorithm cannot determine the sector, this value will be used

Definition at line 37 of file Algorithm.h.


The documentation for this class was generated from the following file:
  • /__w/iguana/iguana/iguana_src/src/iguana/algorithms/clas12/SectorFinder/Algorithm.h