Commit 16dc882d authored by Mark Hodgkinson's avatar Mark Hodgkinson
Browse files

Add neutral FlowElement creator algorithm skeleton.

parent 7560834e
#ifndef PFNEUTRALFLOWELEMENTCREATORALGORITHM_H
#define PFNEUTRALFLOWELEMENTCREATORALGORITHM_H
#include "eflowRec/eflowCaloObject.h"
#include "AthenaBaseComps/AthReentrantAlgorithm.h"
#include "GaudiKernel/ToolHandle.h"
#include "StoreGate/DataHandle.h"
#include "xAODCaloEvent/CaloCluster.h"
#include "xAODPFlow/FlowElement.h"
#include "xAODPFlow/FlowElementContainer.h"
#include "xAODPFlow/PFODefs.h"
class PFNeutralFlowElementCreatorAlgorithm : public AthReentrantAlgorithm {
public:
PFNeutralFlowElementCreatorAlgorithm(const std::string& name,ISvcLocator* pSvcLocator);
~PFNeutralFlowElementCreatorAlgorithm() {}
static const InterfaceID& interfaceID();
StatusCode initialize();
StatusCode execute(const EventContext& ctx) const;
StatusCode finalize();
private:
/** Create the chargedneutral PFO */
StatusCode createNeutralFlowElement(const eflowCaloObject& energyFlowCaloObject, xAOD::FlowElementContainer* neutralFEContainer, xAOD::FlowElementContainer* neutralFEContainer_nonModified) const;
/** Function to add cluster moments onto PFO */
void addMoment(const xAOD::CaloCluster::MomentType& momentType, const xAOD::PFODetails::PFOAttributes& pfoAttribute, const xAOD::CaloCluster& theCluster, xAOD::FlowElement& theFE) const;
/** Toggle EOverP algorithm mode, whereby no charged shower subtraction is performed */
Gaudi::Property<bool> m_eOverPMode{this,"EOverPMode",false,"Toggle EOverP algorithm mode, whereby no charged shower subtraction is performed"};
/** Bool to toggle which jetetmiss configuration we are in - EM cluster input or LC cluster input */
Gaudi::Property<bool> m_LCMode{this,"LCMode",false,"Bool to toggle which jetetmiss configuration we are in - EM cluster input or LC cluster input"};
/** Bool to toggle which jetetmiss configuration we are in - EM cluster input or LC cluster input */
Gaudi::Property<bool> m_doClusterMoments{this,"DoClusterMoments",true,"Bool to toggle whether cluster moments are added to the PFOs"};
/** Toggle usage of calibration hit truth - false by default */
Gaudi::Property<bool> m_useCalibHitTruth{this,"UseCalibHitTruth",false,"Toggle usage of calibration hit truth - false by default"};
/** Toggle addition of charged shower subtracted CaloCluster links to neutral PFO - false by default */
Gaudi::Property<bool> m_addShowerSubtractedClusters{this,"AddShowerSubtractedClusters",false,"Toggle addition of charged shower subtracted CaloCluster links to neutral PFO - false by default"};
/** ReadHandleKey for eflowCaloObjectContainer */
SG::ReadHandleKey<eflowCaloObjectContainer> m_eflowCaloObjectContainerReadHandleKey{this,"eflowCaloObjectContainerName","eflowCaloObjects","ReadHandleKey for eflowCaloObjectContainer"};
/** WriteHandleKey for neutral PFO */
SG::WriteHandleKey<xAOD::FlowElementContainer> m_neutralFEContainerWriteHandleKey{this,"FEOutputName","JetETMissNeutralFlowElements","WriteHandleKey for neutral FlowElements"};
/** WriteHandleKey for non-modified neutral PFO - only used in LC mode */
SG::WriteHandleKey<xAOD::FlowElementContainer> m_neutralFEContainerWriteHandleKey_nonModified{this,"FEOutputName_nonModified","JetETMissNeutralFlowElements_nonModified"," WriteHandleKey for non-modified neutral FlowElements - only used in LC mode"};
};
#endif
#include "eflowRec/PFNeutralFlowElementCreatorAlgorithm.h"
PFNeutralFlowElementCreatorAlgorithm::PFNeutralFlowElementCreatorAlgorithm( const std::string& name, ISvcLocator* pSvcLocator) :
AthReentrantAlgorithm(name, pSvcLocator)
{
}
StatusCode PFNeutralFlowElementCreatorAlgorithm::initialize(){
return StatusCode::SUCCESS;
}
StatusCode PFNeutralFlowElementCreatorAlgorithm::execute(const EventContext& ctx) const {
return StatusCode::SUCCESS;
}
StatusCode PFNeutralFlowElementCreatorAlgorithm::finalize(){ return StatusCode::SUCCESS;}
StatusCode PFNeutralFlowElementCreatorAlgorithm::createNeutralFlowElement(const eflowCaloObject& energyFlowCaloObject, xAOD::FlowElementContainer* neutralFEContainer, xAOD::FlowElementContainer* neutralFEContainer_nonModified) const {
return StatusCode::SUCCESS;
}
\ No newline at end of file
......@@ -10,6 +10,7 @@
#include "eflowRec/PFClusterSelectorTool.h"
#include "eflowRec/PFAlgorithm.h"
#include "eflowRec/PFChargedFlowElementCreatorAlgorithm.h"
#include "eflowRec/PFNeutralFlowElementCreatorAlgorithm.h"
#include "eflowRec/PFCellLevelSubtractionTool.h"
#include "eflowRec/PFRecoverSplitShowersTool.h"
#include "eflowRec/PFMomentCalculatorTool.h"
......@@ -26,6 +27,7 @@ DECLARE_COMPONENT( PFClusterSelectorTool )
DECLARE_COMPONENT( PFTrackSelector )
DECLARE_COMPONENT( PFAlgorithm )
DECLARE_COMPONENT( PFChargedFlowElementCreatorAlgorithm)
DECLARE_COMPONENT( PFNeutralFlowElementCreatorAlgorithm)
DECLARE_COMPONENT( PFOChargedCreatorAlgorithm )
DECLARE_COMPONENT( PFONeutralCreatorAlgorithm )
DECLARE_COMPONENT( PFCellLevelSubtractionTool )
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment