Jpp  17.0.0-rc.1
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Public Attributes | List of all members
JSUPPORT::JEvtWeightFileScannerSet< JFileScanner_t, JComparator_t > Struct Template Reference

Auxiliary class for organising Monte Carlo file scanners associated with event weighters. More...

#include <JEvtWeightFileScannerSet.hh>

Inheritance diagram for JSUPPORT::JEvtWeightFileScannerSet< JFileScanner_t, JComparator_t >:
std::vector< JEvtWeightFileScanner< JFileScanner_t > >

Public Types

typedef
JEvtWeightFileScannerSet
< JFileScanner_t,
JComparator_t > 
filescannerset_type
 
typedef JEvtWeightFileScanner
< JFileScanner_t > 
filescanner_type
 
typedef
filescanner_type::input_type 
input_type
 
typedef std::vector
< filescanner_type >
::value_type 
value_type
 
typedef std::vector
< filescanner_type >
::reference 
reference
 
typedef std::vector
< filescanner_type >
::const_reference 
const_reference
 
typedef std::vector
< filescanner_type >
::const_iterator 
const_iterator
 
typedef std::vector
< filescanner_type >::iterator 
iterator
 
typedef std::vector
< filescanner_type >
::const_reverse_iterator 
const_reverse_iterator
 
typedef std::vector
< filescanner_type >
::reverse_iterator 
reverse_iterator
 

Public Member Functions

 JEvtWeightFileScannerSet ()
 Default constructor. More...
 
 JEvtWeightFileScannerSet (const input_type &input)
 Constructor. More...
 
size_t put (const input_type &input)
 Put files. More...
 
bool put (const std::string &input)
 Put file. More...
 
std::string getUniqueIdentifier (const_iterator p) const
 Get unique identifier for a file-scanner contained within this set of event-weighter-associated file-scanners. More...
 
const_reference find (const JHead &head) const
 Find file scanner compatible with a given header. More...
 
template<class JEvtWeightFactor_t = JEvtWeightFactor>
size_t setEvtWeightFactor (const int type, const JEvtWeightFactor_t &factor)
 Set event-weighting factor for all MC-files corresponding to a given PDG code. More...
 
template<class JEvtWeightFactor_t = JEvtWeightFactor>
size_t setEvtWeightFactor (const std::set< int > &types, const JEvtWeightFactor_t &factor)
 Set event-weight factor of all MC-files corresponding to a given set of PDG codes. More...
 
template<class JEvtWeightFactor_t = JEvtWeightFactor>
size_t setEvtWeightFactor (const JEvtWeightFactorMultiParticle< JEvtWeightFactor_t > &multiParticleFactor)
 Set event-weight factor of all MC-files corresponding to a given multi-particle flux. More...
 
size_t setFlux (const int type, const JFlux &flux)
 Set flux function for all MC-files corresponding to a given PDG code. More...
 
size_t setFlux (const std::set< int > &types, const JFlux &flux)
 Set flux function of all MC-files corresponding to a given set of PDG codes. More...
 
size_t setFlux (const JEvtWeightFactorMultiParticle< JFlux > &multiParticleFlux)
 Set flux function of all MC-files corresponding to a given multi-particle flux interface. More...
 

Public Attributes

JComparator_t compare
 Function object for comparison of headers. More...
 

Detailed Description

template<class JFileScanner_t = JMultipleFileScanner<Evt>, class JComparator_t = std::less<JHead>>
struct JSUPPORT::JEvtWeightFileScannerSet< JFileScanner_t, JComparator_t >

Auxiliary class for organising Monte Carlo file scanners associated with event weighters.

Note: The template class must be derived from JMultipleFileScanner<Evt>.

Definition at line 51 of file JEvtWeightFileScannerSet.hh.

Member Typedef Documentation

template<class JFileScanner_t = JMultipleFileScanner<Evt>, class JComparator_t = std::less<JHead>>
typedef JEvtWeightFileScannerSet<JFileScanner_t, JComparator_t> JSUPPORT::JEvtWeightFileScannerSet< JFileScanner_t, JComparator_t >::filescannerset_type

Definition at line 54 of file JEvtWeightFileScannerSet.hh.

template<class JFileScanner_t = JMultipleFileScanner<Evt>, class JComparator_t = std::less<JHead>>
typedef JEvtWeightFileScanner<JFileScanner_t> JSUPPORT::JEvtWeightFileScannerSet< JFileScanner_t, JComparator_t >::filescanner_type

Definition at line 55 of file JEvtWeightFileScannerSet.hh.

template<class JFileScanner_t = JMultipleFileScanner<Evt>, class JComparator_t = std::less<JHead>>
typedef filescanner_type::input_type JSUPPORT::JEvtWeightFileScannerSet< JFileScanner_t, JComparator_t >::input_type

Definition at line 57 of file JEvtWeightFileScannerSet.hh.

template<class JFileScanner_t = JMultipleFileScanner<Evt>, class JComparator_t = std::less<JHead>>
typedef std::vector<filescanner_type>::value_type JSUPPORT::JEvtWeightFileScannerSet< JFileScanner_t, JComparator_t >::value_type

Definition at line 59 of file JEvtWeightFileScannerSet.hh.

template<class JFileScanner_t = JMultipleFileScanner<Evt>, class JComparator_t = std::less<JHead>>
typedef std::vector<filescanner_type>::reference JSUPPORT::JEvtWeightFileScannerSet< JFileScanner_t, JComparator_t >::reference

Definition at line 60 of file JEvtWeightFileScannerSet.hh.

template<class JFileScanner_t = JMultipleFileScanner<Evt>, class JComparator_t = std::less<JHead>>
typedef std::vector<filescanner_type>::const_reference JSUPPORT::JEvtWeightFileScannerSet< JFileScanner_t, JComparator_t >::const_reference

Definition at line 61 of file JEvtWeightFileScannerSet.hh.

template<class JFileScanner_t = JMultipleFileScanner<Evt>, class JComparator_t = std::less<JHead>>
typedef std::vector<filescanner_type>::const_iterator JSUPPORT::JEvtWeightFileScannerSet< JFileScanner_t, JComparator_t >::const_iterator

Definition at line 63 of file JEvtWeightFileScannerSet.hh.

template<class JFileScanner_t = JMultipleFileScanner<Evt>, class JComparator_t = std::less<JHead>>
typedef std::vector<filescanner_type>::iterator JSUPPORT::JEvtWeightFileScannerSet< JFileScanner_t, JComparator_t >::iterator

Definition at line 64 of file JEvtWeightFileScannerSet.hh.

template<class JFileScanner_t = JMultipleFileScanner<Evt>, class JComparator_t = std::less<JHead>>
typedef std::vector<filescanner_type>::const_reverse_iterator JSUPPORT::JEvtWeightFileScannerSet< JFileScanner_t, JComparator_t >::const_reverse_iterator

Definition at line 65 of file JEvtWeightFileScannerSet.hh.

template<class JFileScanner_t = JMultipleFileScanner<Evt>, class JComparator_t = std::less<JHead>>
typedef std::vector<filescanner_type>::reverse_iterator JSUPPORT::JEvtWeightFileScannerSet< JFileScanner_t, JComparator_t >::reverse_iterator

Definition at line 66 of file JEvtWeightFileScannerSet.hh.

Constructor & Destructor Documentation

template<class JFileScanner_t = JMultipleFileScanner<Evt>, class JComparator_t = std::less<JHead>>
JSUPPORT::JEvtWeightFileScannerSet< JFileScanner_t, JComparator_t >::JEvtWeightFileScannerSet ( )
inline

Default constructor.

Definition at line 73 of file JEvtWeightFileScannerSet.hh.

74  {}
template<class JFileScanner_t = JMultipleFileScanner<Evt>, class JComparator_t = std::less<JHead>>
JSUPPORT::JEvtWeightFileScannerSet< JFileScanner_t, JComparator_t >::JEvtWeightFileScannerSet ( const input_type input)
inline

Constructor.

Parameters
inputinput files

Definition at line 82 of file JEvtWeightFileScannerSet.hh.

83  {
84  put(input);
85  }
size_t put(const input_type &input)
Put files.

Member Function Documentation

template<class JFileScanner_t = JMultipleFileScanner<Evt>, class JComparator_t = std::less<JHead>>
size_t JSUPPORT::JEvtWeightFileScannerSet< JFileScanner_t, JComparator_t >::put ( const input_type input)
inline

Put files.

Parameters
inputinput files
Returns
number of added files

Definition at line 94 of file JEvtWeightFileScannerSet.hh.

95  {
96  size_t n = 0;
97 
98  for (typename input_type::const_iterator i = input.begin(); i != input.end(); ++i) {
99  n += size_t(this->put(*i));
100  }
101 
102  return n;
103  }
size_t put(const input_type &input)
Put files.
const int n
Definition: JPolint.hh:676
template<class JFileScanner_t = JMultipleFileScanner<Evt>, class JComparator_t = std::less<JHead>>
bool JSUPPORT::JEvtWeightFileScannerSet< JFileScanner_t, JComparator_t >::put ( const std::string &  input)
inline

Put file.

Parameters
inputinput file
Returns
true if successfully added; else false.

Definition at line 112 of file JEvtWeightFileScannerSet.hh.

113  {
114  using namespace std;
115  using namespace JPP;
116 
117  const JHead& head = getHeader(input);
118 
119  iterator i = lower_bound(this->begin(), this->end(), head,
121 
122  if (i == this->end() || !i->getHeader().match(head)) {
123  i = this->insert(i, value_type(getEventWeighter(head)));
124  }
125 
126  return i->put(input);
127  }
JEvtWeighter getEventWeighter
Function object for mapping header to event weighter.
JComparator< JResult_t T::*, JComparison::lt > make_comparator(JResult_t T::*member)
Helper method to create comparator between values of data member.
Definition: JComparator.hh:185
const JHead & getHeader() const
Get header.
Definition: JHead.hh:1198
Head getHeader(const JMultipleFileScanner_t &file_list)
Get Monte Carlo header.
Monte Carlo run header.
Definition: JHead.hh:1165
std::vector< filescanner_type >::value_type value_type
JComparator_t compare
Function object for comparison of headers.
template<class JFileScanner_t = JMultipleFileScanner<Evt>, class JComparator_t = std::less<JHead>>
std::string JSUPPORT::JEvtWeightFileScannerSet< JFileScanner_t, JComparator_t >::getUniqueIdentifier ( const_iterator  p) const
inline

Get unique identifier for a file-scanner contained within this set of event-weighter-associated file-scanners.

Parameters
piterator to contained file-scanner
Returns
unique identifier of contained file-scanner

Definition at line 136 of file JEvtWeightFileScannerSet.hh.

137  {
138  using namespace std;
139  using namespace JPP;
140 
141  static const char SEPARATOR = '.';
142 
143  string name = p->getProgramName();
144  int index = 0;
145 
146  for (const_iterator i = this->cbegin(); i != this->cend() && i != p; ++i) {
147  if (i->getProgramName() == name) {
148  ++index;
149  }
150  }
151 
152  return MAKE_STRING(name << SEPARATOR << index);
153  }
then echo Enter input within $TIMEOUT_S seconds echo n User name
Definition: JCookie.sh:42
#define MAKE_STRING(A)
Make string.
Definition: JPrint.hh:142
std::vector< filescanner_type >::const_iterator const_iterator
template<class JFileScanner_t = JMultipleFileScanner<Evt>, class JComparator_t = std::less<JHead>>
const_reference JSUPPORT::JEvtWeightFileScannerSet< JFileScanner_t, JComparator_t >::find ( const JHead head) const
inline

Find file scanner compatible with a given header.

Parameters
headheader
Returns
file scanner

Definition at line 162 of file JEvtWeightFileScannerSet.hh.

163  {
164  for (const_iterator i = this->begin(); i != this->end(); ++i) {
165  if (i->match(head)) {
166  return *i;
167  }
168  }
169 
170  THROW(JValueOutOfRange, "JEvtWeightFileScannerSet::get(): No corresponding scanner found for given header.");
171  }
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:696
Exception for accessing a value in a collection that is outside of its range.
Definition: JException.hh:162
std::vector< filescanner_type >::const_iterator const_iterator
template<class JFileScanner_t = JMultipleFileScanner<Evt>, class JComparator_t = std::less<JHead>>
template<class JEvtWeightFactor_t = JEvtWeightFactor>
size_t JSUPPORT::JEvtWeightFileScannerSet< JFileScanner_t, JComparator_t >::setEvtWeightFactor ( const int  type,
const JEvtWeightFactor_t &  factor 
)
inline

Set event-weighting factor for all MC-files corresponding to a given PDG code.

The template argument corresponds to the desired class of event-weight factor. This class must contain the method getFactor(const Evt&).

Note that the given event-weighting factor will only be assigned to those files
whose header exclusively lists the given PDG code as primary.

Parameters
typePDG code
factorevent-weight factor
Returns
number of modified event weighters

Definition at line 188 of file JEvtWeightFileScannerSet.hh.

190  {
191  using namespace std;
192  using namespace JPP;
193 
194  size_t n = 0;
195 
196  for (iterator i = this->begin(); i != this->end(); ++i) {
197  n += (size_t) i->template setEvtWeightFactor<JEvtWeightFactor_t>(type, factor);
198  }
199 
200  return n;
201  }
const int n
Definition: JPolint.hh:676
template<class JFileScanner_t = JMultipleFileScanner<Evt>, class JComparator_t = std::less<JHead>>
template<class JEvtWeightFactor_t = JEvtWeightFactor>
size_t JSUPPORT::JEvtWeightFileScannerSet< JFileScanner_t, JComparator_t >::setEvtWeightFactor ( const std::set< int > &  types,
const JEvtWeightFactor_t &  factor 
)
inline

Set event-weight factor of all MC-files corresponding to a given set of PDG codes.

The template argument corresponds to the desired class of event-weight factor. This class must contain the method getFactor(const Evt&).

Note that the given event-weighting factor will only be assigned to those files
whose header lists < b>all< /b> of the specified PDG codes as primaries.

Parameters
typesset of PDG codes
factorevent-weight factor
Returns
number of modified event weighters

Definition at line 218 of file JEvtWeightFileScannerSet.hh.

220  {
221  using namespace std;
222  using namespace JPP;
223 
224  size_t n = 0;
225 
226  for (iterator i = this->begin(); i != this->end(); ++i) {
227  n += (size_t) i->template setEvtWeightFactor<JEvtWeightFactor_t>(types, factor);
228  }
229 
230  return n;
231  }
const int n
Definition: JPolint.hh:676
template<class JFileScanner_t = JMultipleFileScanner<Evt>, class JComparator_t = std::less<JHead>>
template<class JEvtWeightFactor_t = JEvtWeightFactor>
size_t JSUPPORT::JEvtWeightFileScannerSet< JFileScanner_t, JComparator_t >::setEvtWeightFactor ( const JEvtWeightFactorMultiParticle< JEvtWeightFactor_t > &  multiParticleFactor)
inline

Set event-weight factor of all MC-files corresponding to a given multi-particle flux.

The template argument corresponds to the desired class of event-weight factor. This class must contain the method getFactor(const Evt&).

Note that the given event-weighting factors will only be assigned to those files
whose header lists < b>all< /b> of the PDG codes associated with the multi-particle event-weighting factor object as primaries.

Parameters
multiParticleFactormulti-particle event-weight factor
Returns
number of modified event weighters

Definition at line 247 of file JEvtWeightFileScannerSet.hh.

248  {
249  using namespace std;
250  using namespace JPP;
251 
252  size_t n = 0;
253 
254  for (iterator i = this->begin(); i != this->end(); ++i) {
255  n += (size_t) i->template setEvtWeightFactor<JEvtWeightFactor_t>(multiParticleFactor);
256  }
257 
258  return n;
259  }
const int n
Definition: JPolint.hh:676
template<class JFileScanner_t = JMultipleFileScanner<Evt>, class JComparator_t = std::less<JHead>>
size_t JSUPPORT::JEvtWeightFileScannerSet< JFileScanner_t, JComparator_t >::setFlux ( const int  type,
const JFlux flux 
)
inline

Set flux function for all MC-files corresponding to a given PDG code.

Note that only the given flux function will only be assigned to those files
whose header exclusively lists the given PDG code as primary.

Parameters
typePDG code
fluxflux function
Returns
number of modified event weighters

Definition at line 272 of file JEvtWeightFileScannerSet.hh.

274  {
275  return setEvtWeightFactor<JFlux>(type, flux);
276  }
template<class JFileScanner_t = JMultipleFileScanner<Evt>, class JComparator_t = std::less<JHead>>
size_t JSUPPORT::JEvtWeightFileScannerSet< JFileScanner_t, JComparator_t >::setFlux ( const std::set< int > &  types,
const JFlux flux 
)
inline

Set flux function of all MC-files corresponding to a given set of PDG codes.

Note that the given flux function will only be assigned to those files
whose header lists < b>all< /b> of the specified PDG codes as primaries.

Parameters
typesset of PDG codes
fluxflux function
Returns
number of modified event weighters

Definition at line 289 of file JEvtWeightFileScannerSet.hh.

291  {
292  return setEvtWeightFactor<JFlux>(types, flux);
293  }
template<class JFileScanner_t = JMultipleFileScanner<Evt>, class JComparator_t = std::less<JHead>>
size_t JSUPPORT::JEvtWeightFileScannerSet< JFileScanner_t, JComparator_t >::setFlux ( const JEvtWeightFactorMultiParticle< JFlux > &  multiParticleFlux)
inline

Set flux function of all MC-files corresponding to a given multi-particle flux interface.

Note that the given flux functions will only be assigned to those files
whose header lists < b>all< /b> of the PDG codes associated with the multi-particle flux interface as primaries.

Parameters
multiParticleFluxmulti-particle flux object
Returns
number of modified event weighters

Definition at line 305 of file JEvtWeightFileScannerSet.hh.

306  {
307  return setEvtWeightFactor<JFlux>(multiParticleFlux);
308  }

Member Data Documentation

template<class JFileScanner_t = JMultipleFileScanner<Evt>, class JComparator_t = std::less<JHead>>
JComparator_t JSUPPORT::JEvtWeightFileScannerSet< JFileScanner_t, JComparator_t >::compare

Function object for comparison of headers.

Definition at line 314 of file JEvtWeightFileScannerSet.hh.


The documentation for this struct was generated from the following file: