Jpp  16.0.0
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 JEvtWeightFileScanner
< JFileScanner_t > 
value_type
 
typedef std::vector
< value_type >::const_iterator 
const_iterator
 
typedef std::vector
< value_type >::iterator 
iterator
 
typedef std::vector
< value_type >
::const_reverse_iterator 
const_reverse_iterator
 
typedef std::vector
< value_type >
::reverse_iterator 
reverse_iterator
 
typedef std::vector
< value_type >::reference 
reference
 
typedef std::vector
< value_type >
::const_reference 
const_reference
 

Public Member Functions

 JEvtWeightFileScannerSet ()
 Default constructor. More...
 
 JEvtWeightFileScannerSet (const JMultipleFileScanner_t &input)
 Constructor. More...
 
size_t put (const JMultipleFileScanner_t &input)
 Put file. 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 JEvtWeightFileScanner
< JFileScanner_t > & 
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.

Definition at line 49 of file JEvtWeightFileScannerSet.hh.

Member Typedef Documentation

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

Definition at line 52 of file JEvtWeightFileScannerSet.hh.

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

Definition at line 54 of file JEvtWeightFileScannerSet.hh.

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

Definition at line 55 of file JEvtWeightFileScannerSet.hh.

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

Definition at line 56 of file JEvtWeightFileScannerSet.hh.

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

Definition at line 57 of file JEvtWeightFileScannerSet.hh.

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

Definition at line 59 of file JEvtWeightFileScannerSet.hh.

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

Definition at line 60 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 66 of file JEvtWeightFileScannerSet.hh.

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

Constructor.

Parameters
inputfile list

Definition at line 75 of file JEvtWeightFileScannerSet.hh.

76  {
77  put(input);
78  }
size_t put(const JMultipleFileScanner_t &input)
Put file.

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 JMultipleFileScanner_t input)
inline

Put file.

Parameters
inputfile list
Returns
number of added files

Definition at line 87 of file JEvtWeightFileScannerSet.hh.

88  {
89  size_t n = 0;
90 
91  for (JMultipleFileScanner_t::const_iterator i = input.begin(); i != input.end(); ++i) {
92  n += size_t(this->put(*i));
93  }
94 
95  return n;
96  }
size_t put(const JMultipleFileScanner_t &input)
Put file.
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
inputfile name
Returns
true if successfully added; else false.

Definition at line 105 of file JEvtWeightFileScannerSet.hh.

106  {
107  using namespace std;
108  using namespace JPP;
109 
110  const JHead& head = getHeader(input);
111 
112  iterator i = lower_bound(this->begin(), this->end(), head,
114 
115  if (i == this->end() || !i->getHeader().match(head)) {
116  i = this->insert(i, value_type(getEventWeighter(head)));
117  }
118 
119  return i->put(input);
120  }
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:1197
JEvtWeightFileScanner< JFileScanner_t > value_type
Head getHeader(const JMultipleFileScanner_t &file_list)
Get Monte Carlo header.
Monte Carlo run header.
Definition: JHead.hh:1164
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 129 of file JEvtWeightFileScannerSet.hh.

130  {
131  using namespace std;
132  using namespace JPP;
133 
134  static const char SEPARATOR = '.';
135 
136  string name = p->getProgramName();
137  int index = 0;
138 
139  for (typename vector<value_type>::const_iterator i = this->cbegin(); i != this->cend() && i != p; ++i) {
140  if (i->getProgramName() == name) {
141  ++index;
142  }
143  }
144 
145  return MAKE_STRING(name << SEPARATOR << index);
146  }
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
template<class JFileScanner_t = JMultipleFileScanner<Evt>, class JComparator_t = std::less<JHead>>
const JEvtWeightFileScanner<JFileScanner_t>& 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 155 of file JEvtWeightFileScannerSet.hh.

156  {
157  for (const_iterator i = this->begin(); i != this->end(); ++i) {
158  if (i->match(head)) {
159  return *i;
160  }
161  }
162 
163  THROW(JValueOutOfRange, "JEvtWeightFileScannerSet::get(): No corresponding scanner found for given header.");
164  }
#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< value_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 181 of file JEvtWeightFileScannerSet.hh.

183  {
184  using namespace std;
185  using namespace JPP;
186 
187  size_t n = 0;
188 
189  for (iterator i = this->begin(); i != this->end(); ++i) {
190  n += (size_t) i->template setEvtWeightFactor<JEvtWeightFactor_t>(type, factor);
191  }
192 
193  return n;
194  }
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 211 of file JEvtWeightFileScannerSet.hh.

213  {
214  using namespace std;
215  using namespace JPP;
216 
217  size_t n = 0;
218 
219  for (iterator i = this->begin(); i != this->end(); ++i) {
220  n += (size_t) i->template setEvtWeightFactor<JEvtWeightFactor_t>(types, factor);
221  }
222 
223  return n;
224  }
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 240 of file JEvtWeightFileScannerSet.hh.

241  {
242  using namespace std;
243  using namespace JPP;
244 
245  size_t n = 0;
246 
247  for (iterator i = this->begin(); i != this->end(); ++i) {
248  n += (size_t) i->template setEvtWeightFactor<JEvtWeightFactor_t>(multiParticleFactor);
249  }
250 
251  return n;
252  }
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 265 of file JEvtWeightFileScannerSet.hh.

267  {
268  return setEvtWeightFactor<JFlux>(type, flux);
269  }
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 282 of file JEvtWeightFileScannerSet.hh.

284  {
285  return setEvtWeightFactor<JFlux>(types, flux);
286  }
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 298 of file JEvtWeightFileScannerSet.hh.

299  {
300  return setEvtWeightFactor<JFlux>(multiParticleFlux);
301  }

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 307 of file JEvtWeightFileScannerSet.hh.


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