ATLAS Offline Software
QCDTruthMultiJetFilter.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_QCDTRUTHMULTIJETFILTER_H
6 #define GENERATORFILTERS_QCDTRUTHMULTIJETFILTER_H
7 
9 #include "GaudiKernel/ServiceHandle.h"
11 #include <string>
12 
13 namespace CLHEP {
14  class HepRandomEngine;
15 }
16 
18 public:
19 
20  QCDTruthMultiJetFilter(const std::string& name, ISvcLocator* pSvcLocator);
24 
25 private:
26 
27  CLHEP::HepRandomEngine* getRandomEngine(const std::string& streamName,
28  const EventContext& ctx) const;
29 
30  int m_Njet;
31  double m_NjetMinPt;
32  double m_MinLeadJetPt;
33  double m_MaxLeadJetPt;
34  double m_MaxEta;
35 
37 
38  ServiceHandle<IAthRNGSvc> m_rndmSvc{this, "RndmSvc", "AthRNGSvc"};
39 
40  long m_total;
41  long m_passed;
42  long m_ptfailed;
44 
45  double m_norm;
46  double m_high;
47 
48  bool m_doShape;
49 
50 public:
51 
53  static double fitFnR(const double * x , const double *) {
54  static const double p[7] = //{100000,-5,0.0004,0.0000001,1./3600.,23,0.8};
55  { 1000000, -5.5, 0.0001, 0.00000012, 1./4150., 23, 0.4 };
56  return p[0]*std::pow(x[0],p[1]+p[2]*x[0]+p[3]*pow(x[0],2))*pow(1-x[0]*p[4],p[5])*pow(x[0],p[6]);
57  }
58 
60  static double fitFn(const double x ) {
61  static const double p[7] = //{100000,-5,0.0004,0.0000001,1./3600.,23,0.8};
62  { 1000000, -5.5, 0.0001, 0.00000012, 1./4150., 23, 0.4 };
63  return p[0]*std::pow(x,p[1]+p[2]*x+p[3]*pow(x,2))*pow(1-x*p[4],p[5])*pow(x,p[6]);
64  }
65 
66 };
67 
68 #endif
QCDTruthMultiJetFilter::m_doShape
bool m_doShape
Attempt to flatten the pT distribution.
Definition: QCDTruthMultiJetFilter.h:48
QCDTruthMultiJetFilter::QCDTruthMultiJetFilter
QCDTruthMultiJetFilter(const std::string &name, ISvcLocator *pSvcLocator)
Definition: QCDTruthMultiJetFilter.cxx:12
QCDTruthMultiJetFilter
Definition: QCDTruthMultiJetFilter.py:1
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
QCDTruthMultiJetFilter::m_MaxLeadJetPt
double m_MaxLeadJetPt
Max pT for the leading truth jet.
Definition: QCDTruthMultiJetFilter.h:33
conifer::pow
constexpr int pow(int x)
Definition: conifer.h:20
GenFilter.h
QCDTruthMultiJetFilter::m_ptfailed
long m_ptfailed
Number of events failing the pT cuts.
Definition: QCDTruthMultiJetFilter.h:42
QCDTruthMultiJetFilter::fitFn
static double fitFn(const double x)
Definition: QCDTruthMultiJetFilter.h:60
x
#define x
QCDTruthMultiJetFilter::m_TruthJetContainerName
std::string m_TruthJetContainerName
Name of the truth jet container.
Definition: QCDTruthMultiJetFilter.h:36
QCDTruthMultiJetFilter::m_MaxEta
double m_MaxEta
Max eta for the truth jets.
Definition: QCDTruthMultiJetFilter.h:34
QCDTruthMultiJetFilter::fitFnR
static double fitFnR(const double *x, const double *)
Definition: QCDTruthMultiJetFilter.h:53
QCDTruthMultiJetFilter::m_NjetMinPt
double m_NjetMinPt
Min pT for N jets truth jets required.
Definition: QCDTruthMultiJetFilter.h:31
GenFilter
Base class for event generator filtering modules.
Definition: GenFilter.h:30
QCDTruthMultiJetFilter::filterInitialize
StatusCode filterInitialize()
Definition: QCDTruthMultiJetFilter.cxx:31
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
CLHEP
STD'S.
Definition: IAtRndmGenSvc.h:19
QCDTruthMultiJetFilter::filterEvent
StatusCode filterEvent()
Definition: QCDTruthMultiJetFilter.cxx:61
QCDTruthMultiJetFilter::m_total
long m_total
Total number of events tested.
Definition: QCDTruthMultiJetFilter.h:40
QCDTruthMultiJetFilter::m_rndmSvc
ServiceHandle< IAthRNGSvc > m_rndmSvc
Random number generator.
Definition: QCDTruthMultiJetFilter.h:38
QCDTruthMultiJetFilter::getRandomEngine
CLHEP::HepRandomEngine * getRandomEngine(const std::string &streamName, const EventContext &ctx) const
Definition: QCDTruthMultiJetFilter.cxx:139
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
QCDTruthMultiJetFilter::filterFinalize
StatusCode filterFinalize()
Definition: QCDTruthMultiJetFilter.cxx:55
QCDTruthMultiJetFilter::m_high
double m_high
High-side function level.
Definition: QCDTruthMultiJetFilter.h:46
QCDTruthMultiJetFilter::m_MinLeadJetPt
double m_MinLeadJetPt
Min pT for the leading truth jet.
Definition: QCDTruthMultiJetFilter.h:32
AthenaPoolExample_Copy.streamName
string streamName
Definition: AthenaPoolExample_Copy.py:39
QCDTruthMultiJetFilter::m_nJetsFailed
long m_nJetsFailed
Number of events failing the nJets cuts.
Definition: QCDTruthMultiJetFilter.h:43
QCDTruthMultiJetFilter::m_Njet
int m_Njet
Number of truth jets required above m_NjetMinPt.
Definition: QCDTruthMultiJetFilter.h:30
QCDTruthMultiJetFilter::m_norm
double m_norm
Normalization for weights.
Definition: QCDTruthMultiJetFilter.h:45
QCDTruthMultiJetFilter::m_passed
long m_passed
Number of events passing all cuts.
Definition: QCDTruthMultiJetFilter.h:41
IAthRNGSvc.h
ServiceHandle< IAthRNGSvc >