ATLAS Offline Software
ChargedTracksWeightFilter.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef GENERATORFILTERS_CHARGEDTRACKSWEIGHTFILTER_H
6 #define GENERATORFILTERS_CHARGEDTRACKSWEIGHTFILTER_H
7 
9 #include "GaudiKernel/ServiceHandle.h"
11 
12 namespace CLHEP {
13  class HepRandomEngine;
14 }
15 
18 public:
19 
20  ChargedTracksWeightFilter(const std::string& name, ISvcLocator* pSvcLocator);
24 
25  struct Spline {
27 
28  struct Point {
30  Point(double _x, double _y, double _slope) :
31  x(_x), y(_y), slope(_slope) {};
32 
33  double x;
34  double y;
35  double slope;
36  };
37 
39  std::vector<Point> points;
40 
41  StatusCode initialize( std::vector<double> & x, std::vector<double> & y);
42 
44  double get_minimum(double min, double max) const;
45 
47  double value(int nch) const;
48  };
49 
50 private:
51 
52  CLHEP::HepRandomEngine* getRandomEngine(const std::string& streamName,
53  const EventContext& ctx) const;
54 
56  double get_nch_weight(int nch) const;
57 
59  StatusCode event_weight(double & event_weight) const;
60 
62  void weight_event(double weight);
63 
65  ServiceHandle<IAthRNGSvc> m_rndmSvc{this, "RndmSvc", "AthRNGSvc"};
66 
67  // Minimum pT for a track to count
68  double m_Ptmin;
69 
70  // Maximum |pseudorapidity| for a track to count
71  double m_EtaRange;
72 
73  // Minimum number of tracks
74  int m_nchmin;
75 
76  // Maximum number of tracks
77  int m_nchmax;
78 
80 
82  std::vector<double> m_weight_fun_x;
83  std::vector<double> m_weight_fun_y;
84 
85  double m_min_weight = 0;
86 
88  double m_nevents_selected = 0;
90  double m_nevents_accepted = 0;
91 };
92 
93 #endif
ChargedTracksWeightFilter::m_nchmax
int m_nchmax
Definition: ChargedTracksWeightFilter.h:77
ChargedTracksWeightFilter::Spline::get_minimum
double get_minimum(double min, double max) const
get minimum over certain range (requires initialization to extrapolate)
Definition: ChargedTracksWeightFilter.cxx:229
max
#define max(a, b)
Definition: cfImp.cxx:41
ChargedTracksWeightFilter::filterFinalize
StatusCode filterFinalize()
Definition: ChargedTracksWeightFilter.cxx:54
ChargedTracksWeightFilter::filterInitialize
StatusCode filterInitialize()
Definition: ChargedTracksWeightFilter.cxx:24
ChargedTracksWeightFilter::Spline::Point::y
double y
Definition: ChargedTracksWeightFilter.h:34
GenFilter.h
ChargedTracksWeightFilter
Filter events based on presence of charged tracks.
Definition: ChargedTracksWeightFilter.h:17
ChargedTracksWeightFilter::m_rndmSvc
ServiceHandle< IAthRNGSvc > m_rndmSvc
Rndm generator service.
Definition: ChargedTracksWeightFilter.h:65
ChargedTracksWeightFilter::get_nch_weight
double get_nch_weight(int nch) const
get weight to filter and weight events
Definition: ChargedTracksWeightFilter.cxx:170
ChargedTracksWeightFilter::m_nchmin
int m_nchmin
Definition: ChargedTracksWeightFilter.h:74
ChargedTracksWeightFilter::m_weight_fun_y
std::vector< double > m_weight_fun_y
Definition: ChargedTracksWeightFilter.h:83
x
#define x
ChargedTracksWeightFilter::getRandomEngine
CLHEP::HepRandomEngine * getRandomEngine(const std::string &streamName, const EventContext &ctx) const
Definition: ChargedTracksWeightFilter.cxx:64
ChargedTracksWeightFilter::Spline::Point::Point
Point(double _x, double _y, double _slope)
Single point and slope to next point.
Definition: ChargedTracksWeightFilter.h:30
ChargedTracksWeightFilter::ChargedTracksWeightFilter
ChargedTracksWeightFilter(const std::string &name, ISvcLocator *pSvcLocator)
Definition: ChargedTracksWeightFilter.cxx:13
dqt_zlumi_pandas.weight
int weight
Definition: dqt_zlumi_pandas.py:200
ChargedTracksWeightFilter::Spline
Definition: ChargedTracksWeightFilter.h:25
GenFilter
Base class for event generator filtering modules.
Definition: GenFilter.h:30
ChargedTracksWeightFilter::m_spline
Spline m_spline
Definition: ChargedTracksWeightFilter.h:79
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ChargedTracksWeightFilter::m_EtaRange
double m_EtaRange
Definition: ChargedTracksWeightFilter.h:71
CLHEP
STD'S.
Definition: IAtRndmGenSvc.h:19
ChargedTracksWeightFilter::m_nevents_accepted
double m_nevents_accepted
Number of events passing weight-filtering (weighted, origin weight)
Definition: ChargedTracksWeightFilter.h:90
ChargedTracksWeightFilter::Spline::points
std::vector< Point > points
n-1 spline points filled at initialization
Definition: ChargedTracksWeightFilter.h:39
ChargedTracksWeightFilter::Spline::Point::x
double x
Definition: ChargedTracksWeightFilter.h:31
min
#define min(a, b)
Definition: cfImp.cxx:40
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
ChargedTracksWeightFilter::Spline::Point
Linear spline representation of a function used to calculate weights.
Definition: ChargedTracksWeightFilter.h:28
ChargedTracksWeightFilter::weight_event
void weight_event(double weight)
modify the event weight by weight
Definition: ChargedTracksWeightFilter.cxx:181
ChargedTracksWeightFilter::m_min_weight
double m_min_weight
Definition: ChargedTracksWeightFilter.h:85
ChargedTracksWeightFilter::filterEvent
StatusCode filterEvent()
Definition: ChargedTracksWeightFilter.cxx:74
ChargedTracksWeightFilter::m_weight_fun_x
std::vector< double > m_weight_fun_x
Spline points.
Definition: ChargedTracksWeightFilter.h:82
ChargedTracksWeightFilter::m_nevents_selected
double m_nevents_selected
Number of events passing selection (weighted, orig weight)
Definition: ChargedTracksWeightFilter.h:88
AthenaPoolExample_Copy.streamName
string streamName
Definition: AthenaPoolExample_Copy.py:39
ChargedTracksWeightFilter::event_weight
StatusCode event_weight(double &event_weight) const
read the event weight
Definition: ChargedTracksWeightFilter.cxx:281
y
#define y
ChargedTracksWeightFilter::Spline::initialize
StatusCode initialize(std::vector< double > &x, std::vector< double > &y)
Definition: ChargedTracksWeightFilter.cxx:252
ChargedTracksWeightFilter::Spline::Point::slope
double slope
Definition: ChargedTracksWeightFilter.h:35
ChargedTracksWeightFilter::Spline::value
double value(int nch) const
get value for certain x
Definition: ChargedTracksWeightFilter.cxx:208
ChargedTracksWeightFilter::m_Ptmin
double m_Ptmin
Definition: ChargedTracksWeightFilter.h:68
IAthRNGSvc.h
ServiceHandle< IAthRNGSvc >