ATLAS Offline Software
TileClusterFilterAlg.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 /*
6  * File: TileClusterFilterAlg.cxx
7  * Author: Carlos.Solans@cern.ch
8  */
9 
11 #include "TileClusterFilterAlg.h"
12 
13 TileClusterFilterAlg::TileClusterFilterAlg( const std::string& name, ISvcLocator* pSvcLocator ):
14  AthAlgorithm( name, pSvcLocator ){
15 
16  declareProperty("InputContainer", m_inputContainerName="CaloTopoClusters");
17  declareProperty("OutputContainer", m_outputContainerName="SelectedClusters");
18  declareProperty("TrackContainer", m_trackContainerName="SelectedTracks");
19  declareProperty("TrackTools", m_trackInCalo);
20  declareProperty("DeltaR", m_deltaR=0.2);
21 }
22 
24 
25  ATH_MSG_INFO("TileClusterFilterAlg::initialize() ");
26 
27  CHECK(m_trackInCalo.retrieve());
28 
29  return StatusCode::SUCCESS;
30 }
31 
33 
34  //Get input clusters
35  const CLUSTERCONTAINER* inputClusters=0;
36  CHECK( evtStore()->retrieve( inputClusters, m_inputContainerName ) );
37 
38  //Allocate output clusters container
41  outputClusters->setStore( outputAuxClusters );
42 
43  //Get the input tracks
44  const TRACKCONTAINER* inputTracks = 0;
46 
47  xAOD::CaloClusterContainer::const_iterator clusterItr = inputClusters->begin();
48  xAOD::CaloClusterContainer::const_iterator clusterEnd = inputClusters->end();
49  while(clusterItr != clusterEnd){
50  const CLUSTER* cluster = *clusterItr;
52  for( ; it != inputTracks->end(); ++it ){
53  const TRACK* track = *it;
54  std::vector< std::vector<double> > etrack = m_trackInCalo->getXYZEtaPhiPerLayer(track);
55  double deltaR=999;
56  for(int i=0;i<11;i++){
57  double dif_eta = cluster->etaSample((CaloSampling::CaloSample)i) - etrack[i][3];
58  //double dif_phi = CaloPhiRange::diff(cluster->phiSample((CaloSampling::CaloSample)i) - etrack[i][4]);
59  double dif_phi = cluster->phiSample((CaloSampling::CaloSample)i) - etrack[i][4];
60  if(dif_phi<0) dif_phi=-dif_phi;
61  if(dif_phi>M_PI){dif_phi=2*M_PI-dif_phi;}
62  double tmp = sqrt(dif_eta*dif_eta+dif_phi*dif_phi);
63  deltaR = (tmp<deltaR ? tmp : deltaR);
64  }
65  if(deltaR<=m_deltaR){
66  CLUSTER* tmpCluster = new CLUSTER();
67  tmpCluster->makePrivateStore( cluster );
68  outputClusters->push_back(tmpCluster);
69  }
70  }
71  }
72  CHECK( evtStore()->record(outputClusters, m_outputContainerName ) );
73  CHECK( evtStore()->record(outputAuxClusters, m_outputContainerName+"Aux.") );
74 
75  return StatusCode::SUCCESS;
76 }
77 
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
CLUSTER
xAOD::CaloCluster CLUSTER
Definition: D3PDMaker/TileD3PDMaker/src/ITrackTools.h:89
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
skel.it
it
Definition: skel.GENtoEVGEN.py:423
M_PI
#define M_PI
Definition: ActiveFraction.h:11
TileClusterFilterAlg::m_trackContainerName
std::string m_trackContainerName
Definition: TileClusterFilterAlg.h:34
xAOD::CaloCluster_v1::etaSample
float etaSample(const CaloSample sampling) const
Retrieve barycenter in a given sample.
Definition: CaloCluster_v1.cxx:532
GeoPrimitives.h
AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
xAOD::CaloClusterContainer
CaloClusterContainer_v1 CaloClusterContainer
Define the latest version of the calorimeter cluster container.
Definition: Event/xAOD/xAODCaloEvent/xAODCaloEvent/CaloClusterContainer.h:17
xAOD::CaloCluster_v1
Description of a calorimeter cluster.
Definition: CaloCluster_v1.h:59
TileClusterFilterAlg::m_inputContainerName
std::string m_inputContainerName
Definition: TileClusterFilterAlg.h:32
python.TrigInDetConfig.inputTracks
inputTracks
Definition: TrigInDetConfig.py:168
lumiFormat.i
int i
Definition: lumiFormat.py:92
CaloSampling::CaloSample
CaloSample
Definition: Calorimeter/CaloGeoHelpers/CaloGeoHelpers/CaloSampling.h:22
TileClusterFilterAlg::m_trackInCalo
ToolHandle< ITrackTools > m_trackInCalo
Definition: TileClusterFilterAlg.h:35
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
xAOD::CaloCluster_v1::phiSample
float phiSample(const CaloSample sampling) const
Retrieve barycenter in a given sample.
Definition: CaloCluster_v1.cxx:547
DeMoUpdate.tmp
string tmp
Definition: DeMoUpdate.py:1167
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
AthAlgorithm
Definition: AthAlgorithm.h:47
TileClusterFilterAlg.h
xAOD::CaloClusterAuxContainer_v2
Auxiliary container for calorimeter cluster containers.
Definition: CaloClusterAuxContainer_v2.h:30
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
xAOD::CaloClusterAuxContainer
CaloClusterAuxContainer_v2 CaloClusterAuxContainer
Define the latest version of the calorimeter cluster auxiliary container.
Definition: CaloClusterAuxContainer.h:16
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
TileClusterFilterAlg::TileClusterFilterAlg
TileClusterFilterAlg(const std::string &name, ISvcLocator *pSvcLocator)
Definition: TileClusterFilterAlg.cxx:13
SG::AuxElement::makePrivateStore
void makePrivateStore()
Create a new (empty) private store for this object.
Definition: AuxElement.cxx:172
TileClusterFilterAlg::execute
virtual StatusCode execute()
Definition: TileClusterFilterAlg.cxx:32
TileClusterFilterAlg::m_outputContainerName
std::string m_outputContainerName
Definition: TileClusterFilterAlg.h:33
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
TileClusterFilterAlg::m_deltaR
float m_deltaR
Definition: TileClusterFilterAlg.h:36
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
TileClusterFilterAlg::initialize
virtual StatusCode initialize()
Definition: TileClusterFilterAlg.cxx:23
makeComparison.deltaR
float deltaR
Definition: makeComparison.py:36
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.