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

#include <Algorithm.h>

Detailed Description

Algorithm: Filter a particle bank by cutting on Z Vertex

Input and Output Banks:
See Run function(s) for the banks that are processed by this algorithm.
Type: Filter
This algorithm will filter input bank(s).
Configuration Options:
YAML configuration, which includes the default option values:
clas12::ZVertexFilter:
# the name of the particle bank, only used for users of `hipo::banklist`;
# e.g., set it to 'MC::Particle' if you prefer
particle_bank: 'REC::Particle'
# scattered electron cuts
# - lower and upper electron z-vertex cuts
# - run-range dependent
# - cuts are not applied to FT electrons (FD and CD only)
electron:
# default cuts
- default:
vz: [ -20.0, 20.0 ]
# RG-A spring2018 inbending, 1st period
- runs: [ 3031, 3087 ]
vz: [ -6.061, 1.819 ]
# RG-A spring2018 outbending, 1st period
- runs: [ 3103, 3293 ]
vz: [ -7.272, 0.909 ]
# RG-A spring2018 inbending, 2nd period
- runs: [ 3306, 3817 ]
vz: [ -6.061, 1.819 ]
# RG-A spring2018 outbending, 2nd period
- runs: [ 3820, 3987 ]
vz: [ -7.272, 0.909 ]
# RG-A spring2018 inbending, 3rd period
- runs: [ 4003, 4325 ]
vz: [ -6.061, 1.819 ]
# RG-A fall2018 inbending
- runs: [ 4763, 5419 ]
vz: [ -6.364, 1.515 ]
# RG-A fall2018 outbending
- runs: [ 5423, 5666 ]
vz: [ -7.879, 0.303 ]
# RG-A spring2019 inbending
- runs: [ 6616, 6783 ]
vz: [ -6.364, 1.515 ]
# RG-B spring2019 inbending # FIXME: not official (see FIXME above)
- runs: [ 6156, 6603 ]
vz: [ -8.0, 3.0 ]
# RG-B fall2019 outbending # FIXME: not official (see FIXME above)
- runs: [ 11093, 11283 ]
vz: [ -10.0, 2.5 ]
# RG-B spring2020 inbending # FIXME: not official (see FIXME above)
- runs: [ 11323, 11571 ]
vz: [ -8.0, 3.0 ]

Definition at line 12 of file Algorithm.h.

Public Member Functions

bool Filter (double const zvertex, int const pid, int const status, concurrent_key_t const key) const
 Action Function: checks if the Z Vertex is within specified bounds if pid is one for which the filter should be applied to.; Cuts applied to particles in FD or CD (ie not in FT).
std::vector< double > GetElectronZcuts (concurrent_key_t const key) const
int GetRunNum (concurrent_key_t const key) const
concurrent_key_t PrepareEvent (int const runnum) const
 Action Function: prepare the event
bool Run (hipo::bank &particleBank, hipo::bank const &configBank) const
 Run Function: Process an event's hipo::bank objects
void SetElectronZcuts (double zcut_lower, double zcut_upper, concurrent_key_t const key)
 sets the z-vertex cuts
Public Member Functions inherited from iguana::Algorithm
 Algorithm (std::string_view name)
hipo::banklist::size_type GetBankIndex (hipo::banklist &banks, std::string const &bank_name) const noexcept(false)
std::unique_ptr< YAMLReader > const & GetConfig () const
hipo::bank GetCreatedBank (std::string const &bank_name="") const noexcept(false)
hipo::banklist::size_type GetCreatedBankIndex (hipo::banklist &banks) 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)
unsigned int GetCreatedBankVariant () const
template<typename OPTION_TYPE>
OPTION_TYPE GetOptionScalar (YAMLReader::node_path_t node_path={}) const
template<typename OPTION_TYPE>
std::set< OPTION_TYPE > GetOptionSet (YAMLReader::node_path_t node_path={}) const
template<typename OPTION_TYPE>
std::vector< OPTION_TYPE > GetOptionVector (YAMLReader::node_path_t node_path={}) const
std::unique_ptr< RCDBReader > & GetRCDBReader ()
virtual bool Run (hipo::banklist &banks) const final
 Run Function: Process an event's hipo::banklist
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)
 Set an option specified by the user.
virtual void Start () final
 Start Function: Initialize this algorithm before any events are processed, with the intent to process either hipo::bank objects or bank rows, rather than full hipo::banklist objects
virtual void Start (hipo::banklist &banks) final
 Start Function: Initialize this algorithm before any events are processed, with the intent to process hipo::banklist objects
virtual void Stop () final
 Stop Function: Finalize this algorithm after all events are processed.
Public Member Functions inherited from iguana::Object
 Object (std::string_view name="", Logger::Level lev=Logger::DEFAULT_LEVEL)
std::unique_ptr< Logger > & GetLog ()
std::string GetName () const
std::unique_ptr< Logger > & Log ()
void SetLogLevel (Logger::Level const lev)
void SetLogLevel (std::string_view lev)
void SetName (std::string_view name)

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) noexcept(false)
hipo::bank & GetBank (hipo::banklist &banks, hipo::banklist::size_type const idx, std::string const &expected_bank_name="") const noexcept(false)
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 StartRCDBReader ()
 Instantiate the RCDBReader instance for this algorithm.
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.
unsigned int m_created_bank_variant {0}
std::string m_default_config_file
 Default configuration file name.
std::mutex m_mutex
 A mutex for this algorithm.
std::unique_ptr< RCDBReaderm_rcdb
 RCDB reader.
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::ZVertexFilter:
Inheritance graph

Member Function Documentation

◆ Filter()

bool iguana::clas12::ZVertexFilter::Filter ( double const zvertex,
int const pid,
int const status,
concurrent_key_t const key ) const

Action Function: checks if the Z Vertex is within specified bounds if pid is one for which the filter should be applied to.; Cuts applied to particles in FD or CD (ie not in FT).

Function Type
scalar filter
Note
This function should be called for each particle
Parameters
zvertexthe particle Z Vertex to check
pidthe particle pid
statusparticle status used to check particle is not in FT
keythe return value of ::PrepareEvent
Returns
true if zvertex is within specified bounds

◆ GetElectronZcuts()

std::vector< double > iguana::clas12::ZVertexFilter::GetElectronZcuts ( concurrent_key_t const key) const
Parameters
keythe return value of ::PrepareEvent
Returns
the current z-vertex cuts

◆ GetRunNum()

int iguana::clas12::ZVertexFilter::GetRunNum ( concurrent_key_t const key) const
Parameters
keythe return value of ::PrepareEvent
Returns
the current run number

◆ PrepareEvent()

concurrent_key_t iguana::clas12::ZVertexFilter::PrepareEvent ( int const runnum) const

Action Function: prepare the event

Function Type
reload
Note
This function should be called for each event
Parameters
runnumthe run number
Returns
the key to be used in ::Filter

◆ Run()

bool iguana::clas12::ZVertexFilter::Run ( hipo::bank & particleBank,
hipo::bank const & configBank ) const

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

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

Parameters
[in,out]particleBankparticle bank (e.g., REC::Particle), which will be filtered
[in]configBankRUN::config
Returns
false if all particles are filtered out

◆ SetElectronZcuts()

void iguana::clas12::ZVertexFilter::SetElectronZcuts ( double zcut_lower,
double zcut_upper,
concurrent_key_t const key )

sets the z-vertex cuts

Warning
this method is not thread safe; instead, for thread safety, use ::PrepareEvent and a custom configuration file.
Parameters
zcut_lowerthe lower bound of the cut
zcut_upperthe upper bound of the cut
keythe, for ::GetElectronZcuts

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