ATLAS Offline Software
G4CosmicFilter.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
7 #include "MCTruth/TrackHelper.h"
9 
10 #include "G4RunManager.hh"
11 #include "G4Event.hh"
12 #include "StoreGate/ReadHandle.h"
13 
14 #include "GaudiKernel/Bootstrap.h"
15 #include "GaudiKernel/ISvcLocator.h"
16 #include "GaudiKernel/IMessageSvc.h"
17 
18 namespace G4UA
19 {
20 
22  : AthMessaging(Gaudi::svcLocator()->service< IMessageSvc >( "MessageSvc" ), "G4CosmicFilter"),
23  m_config(config), m_report()
24  {
25  }
26 
27  void G4CosmicFilter::EndOfEventAction(const G4Event*)
28  {
29  int counter(0);
30 
31  m_report.ntot++;
32 
34  if (! coll.isValid() )
35  {
36  ATH_MSG_WARNING( "Cannot retrieve TrackRecordCollection " << m_config.collectionName );
37  G4RunManager::GetRunManager()->AbortEvent();
38  return;
39  }
40 
41  counter = coll->size();
42 
43  if (m_config.PDGId!=0 || m_config.ptMin>0 || m_config.ptMax>0)
44  {
45  counter=0;
46  for (const auto& a_tr : *coll)
47  {
48  if (m_config.PDGId!=0 && m_config.PDGId != std::abs(a_tr.GetPDGCode())) continue;
49  if (m_config.ptMin>0 && m_config.ptMin > a_tr.GetMomentum().perp() ) continue;
50  if (m_config.ptMax>0 && m_config.ptMax < a_tr.GetMomentum().perp() ) continue;
51  counter++;
52  }
53  }
54 
55  //std::cout << "EndOfEventAction counter is "<<counter<<std::endl;
56  if (counter==0)
57  {
58  ATH_MSG_INFO("aborting event due to failing filter");
59  G4RunManager::GetRunManager()->AbortEvent();
60  return;
61  }
62 
63  m_report.npass++;
64  return;
65 
66  }
67 
68 } // namespace G4UA
G4UA::G4CosmicFilter::EndOfEventAction
virtual void EndOfEventAction(const G4Event *) override
Definition: G4CosmicFilter.cxx:27
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
G4CosmicFilter.h
G4UA::G4CosmicFilter::G4CosmicFilter
G4CosmicFilter(const Config &config)
Definition: G4CosmicFilter.cxx:21
G4UA
for nSW
Definition: CalibrationDefaultProcessing.h:19
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
G4UA::G4CosmicFilter::Config::ptMax
double ptMax
Definition: G4CosmicFilter.h:28
TrackHelper.h
G4UA::G4CosmicFilter::Report::npass
int npass
Definition: G4CosmicFilter.h:34
config
Definition: PhysicsAnalysis/AnalysisCommon/AssociationUtils/python/config.py:1
G4UA::G4CosmicFilter::m_report
Report m_report
Definition: G4CosmicFilter.h:51
G4UA::G4CosmicFilter::m_config
Config m_config
Definition: G4CosmicFilter.h:50
AthMessaging
Class to provide easy MsgStream access and capabilities.
Definition: AthMessaging.h:55
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
G4UA::G4CosmicFilter::Config::ptMin
double ptMin
Definition: G4CosmicFilter.h:27
G4UA::G4CosmicFilter::Config::PDGId
int PDGId
Definition: G4CosmicFilter.h:26
TrackRecordCollection.h
G4UA::G4CosmicFilter::Config
Definition: G4CosmicFilter.h:24
G4UA::G4CosmicFilter::Report::ntot
int ntot
Definition: G4CosmicFilter.h:33
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
Gaudi
=============================================================================
Definition: CaloGPUClusterAndCellDataMonitorOptions.h:273
AtlasHitsVector::size
size_type size() const
Definition: AtlasHitsVector.h:143
ReadHandle.h
Handle class for reading from StoreGate.
G4UA::G4CosmicFilter::Config::collectionName
std::string collectionName
Definition: G4CosmicFilter.h:25
test_pyathena.counter
counter
Definition: test_pyathena.py:15