Jpp  18.6.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, const bool requireAll=false)
 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, const bool requireAll=false)
 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, const bool requireAll=false)
 Set flux function of all MC-files corresponding to a given set of PDG codes. More...
 
size_t setFlux (const JEvtWeightFactorMultiParticle< JFlux > &multiParticleFlux, const bool requireAll=false)
 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 48 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 51 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 52 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 54 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 56 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 57 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 58 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 60 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 61 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 62 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 63 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 70 of file JEvtWeightFileScannerSet.hh.

71  {}
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 79 of file JEvtWeightFileScannerSet.hh.

80  {
81  put(input);
82  }
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 91 of file JEvtWeightFileScannerSet.hh.

92  {
93  size_t n = 0;
94 
95  for (typename input_type::const_iterator i = input.begin(); i != input.end(); ++i) {
96  n += size_t(this->put(*i));
97  }
98 
99  return n;
100  }
size_t put(const input_type &input)
Put files.
const int n
Definition: JPolint.hh:786
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 109 of file JEvtWeightFileScannerSet.hh.

110  {
111  using namespace std;
112  using namespace JPP;
113 
114  const JHead& head = getHeader(input);
115 
116  iterator i = lower_bound(this->begin(), this->end(), head,
118 
119  if (i == this->end() || !i->getHeader().match(head)) {
120  i = this->insert(i, value_type(getEventWeighter(head)));
121  }
122 
123  return i->put(input);
124  }
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.
Head getHeader(const JMultipleFileScanner_t &file_list)
Get Monte Carlo header.
Monte Carlo run header.
Definition: JHead.hh:1234
std::vector< filescanner_type >::value_type value_type
const JHead & getHeader() const
Get header.
Definition: JHead.hh:1270
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 133 of file JEvtWeightFileScannerSet.hh.

134  {
135  using namespace std;
136  using namespace JPP;
137 
138  static const char SEPARATOR = '.';
139 
140  string name = p->getProgramName();
141  int index = 0;
142 
143  for (const_iterator i = this->cbegin(); i != this->cend() && i != p; ++i) {
144  if (i->getProgramName() == name) {
145  ++index;
146  }
147  }
148 
149  return MAKE_STRING(name << SEPARATOR << index);
150  }
#define MAKE_STRING(A)
Make string.
Definition: JPrint.hh:127
then fatal The output file must have the wildcard in the name
Definition: JCanberra.sh:31
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 159 of file JEvtWeightFileScannerSet.hh.

160  {
161  using namespace JPP;
162 
163  for (const_iterator i = this->begin(); i != this->end(); ++i) {
164  if (i->match(head)) {
165  return *i;
166  }
167  }
168 
169  THROW(JValueOutOfRange, "JEvtWeightFileScannerSet::get(): No corresponding scanner found for given header.");
170  }
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:712
Exception for accessing a value in a collection that is outside of its range.
Definition: JException.hh:178
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 187 of file JEvtWeightFileScannerSet.hh.

189  {
190  using namespace std;
191  using namespace JPP;
192 
193  size_t n = 0;
194 
195  for (iterator i = this->begin(); i != this->end(); ++i) {
196  n += (size_t) i->template setEvtWeightFactor<JEvtWeightFactor_t>(type, factor);
197  }
198 
199  return n;
200  }
then set_variable PMT_FILE set_variable DAQ_FILE set_variable OUTPUT_FILE set_variable DETECTOR else fatal Wrong number of arguments fi JPrintTree f $DAQ_FILE type
const int n
Definition: JPolint.hh:786
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,
const bool  requireAll = false 
)
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&).

If the boolean requireAll argument is set to true, 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
requireAlltoggle requirement that each file header must contain every given PDG code.
Returns
number of modified event weighters

Definition at line 219 of file JEvtWeightFileScannerSet.hh.

222  {
223  using namespace std;
224  using namespace JPP;
225 
226  size_t n = 0;
227 
228  if (requireAll) {
229 
230  for (iterator i = this->begin(); i != this->end(); ++i) {
231  n += (size_t) i->template setEvtWeightFactor<JEvtWeightFactor_t>(types, factor);
232  }
233 
234  } else {
235 
236  for (iterator i = this->begin(); i != this->end(); ++i) {
237 
238  bool isSet = false;
239 
240  for (set<int>::const_iterator j = types.cbegin(); j != types.cend() && !isSet; ++j) {
241  isSet = i->template setEvtWeightFactor<JEvtWeightFactor_t>(*j, factor);
242  }
243 
244  n += (size_t) isSet;
245  }
246  }
247 
248  return n;
249  }
const int n
Definition: JPolint.hh:786
int j
Definition: JPolint.hh:792
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,
const bool  requireAll = false 
)
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&).

If the boolean requireAll argument is set to true, the given flux factor 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
multiParticleFactormulti-particle event-weight factor
requireAlltoggle requirement that each file header must contain every given PDG code.
Returns
number of modified event weighters

Definition at line 267 of file JEvtWeightFileScannerSet.hh.

269  {
270  using namespace std;
271  using namespace JPP;
272 
273  size_t n = 0;
274 
275  if (requireAll) {
276 
277  for (iterator i = this->begin(); i != this->end(); ++i) {
278  n += (size_t) i->template setEvtWeightFactor<JEvtWeightFactor_t>(multiParticleFactor);
279  }
280 
281  } else {
282 
283  for (iterator i = this->begin(); i != this->end(); ++i) {
284 
285  bool isSet = false;
286 
287  for (typename JEvtWeightFactorMultiParticle<JEvtWeightFactor_t>::const_iterator j = multiParticleFactor.cbegin(); j != multiParticleFactor.cend() && !isSet; ++j) {
288  isSet = i->template setEvtWeightFactor<JEvtWeightFactor_t>(j->first, *(j->second));
289  }
290 
291  n += (size_t) isSet;
292  }
293  }
294 
295  return n;
296  }
const int n
Definition: JPolint.hh:786
Implementation of event-weight factor for multiple particle types.
int j
Definition: JPolint.hh:792
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 309 of file JEvtWeightFileScannerSet.hh.

311  {
312  return setEvtWeightFactor<JFlux>(type, flux);
313  }
then set_variable PMT_FILE set_variable DAQ_FILE set_variable OUTPUT_FILE set_variable DETECTOR else fatal Wrong number of arguments fi JPrintTree f $DAQ_FILE type
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,
const bool  requireAll = false 
)
inline

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

If the boolean requireAll argument is set to true, 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
requireAlltoggle requirement that each file header must contain every given PDG code.
Returns
number of modified event weighters

Definition at line 328 of file JEvtWeightFileScannerSet.hh.

331  {
332  return setEvtWeightFactor<JFlux>(types, flux, requireAll);
333  }
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,
const bool  requireAll = false 
)
inline

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

If the boolean requireAll argument is set to true, the given flux factor 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
requireAlltoggle requirement that each file header must contain every given PDG code.
Returns
number of modified event weighters

Definition at line 347 of file JEvtWeightFileScannerSet.hh.

349  {
350  return setEvtWeightFactor<JFlux>(multiParticleFlux, requireAll);
351  }

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


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