Skip to content
Snippets Groups Projects
Commit 320dd902 authored by Mark Hodgkinson's avatar Mark Hodgkinson
Browse files

Add ESD example job options for serial and MT particle flow.

Fix two misconfigurations in the MT version of particle flow, such that it gives same output as serial version.
Add DEBUG message to PFRevoerSplitShowersTool.cxx to aid future debugging.


Former-commit-id: 4327d1c7
parent e3bbd6e6
No related merge requests found
...@@ -68,7 +68,7 @@ public: ...@@ -68,7 +68,7 @@ public:
ToolHandle<IEFlowCellEOverPTool> m_theEOverPTool{this,"eflowCellEOverPTool","eflowCellEOverPTool","Energy Flow E/P Values and Shower Paremeters Tool"}; ToolHandle<IEFlowCellEOverPTool> m_theEOverPTool{this,"eflowCellEOverPTool","eflowCellEOverPTool","Energy Flow E/P Values and Shower Paremeters Tool"};
/** Parameter that controls whether to use retain remaining calorimeter energy in track-cluster system, after charged shower subtraction */ /** Parameter that controls whether to use retain remaining calorimeter energy in track-cluster system, after charged shower subtraction */
Gaudi::Property<double> m_subtractionSigmaCut{this,"SubtractionSigmaCut",1.2,"Parameter that controls whether to use retain remaining calorimeter energy in track-cluster system, after charged shower subtraction"}; Gaudi::Property<double> m_subtractionSigmaCut{this,"SubtractionSigmaCut",1.5,"Parameter that controls whether to use retain remaining calorimeter energy in track-cluster system, after charged shower subtraction"};
/** Parameter that controls whether a track, in a track-cluster system, will be processed by the split shower recovery algorithm */ /** Parameter that controls whether a track, in a track-cluster system, will be processed by the split shower recovery algorithm */
Gaudi::Property<double> m_consistencySigmaCut{this,"ConsistencySigmaCut",1.0,"Parameter that controls whether a track, in a track-cluster system, will be processed by the split shower recovery algorithm"}; Gaudi::Property<double> m_consistencySigmaCut{this,"ConsistencySigmaCut",1.0,"Parameter that controls whether a track, in a track-cluster system, will be processed by the split shower recovery algorithm"};
......
...@@ -91,7 +91,7 @@ MatchingTool_Recover.TrackPositionType = 'EM2EtaPhi' # str ...@@ -91,7 +91,7 @@ MatchingTool_Recover.TrackPositionType = 'EM2EtaPhi' # str
MatchingTool_Recover.ClusterPositionType = 'PlainEtaPhi' # str MatchingTool_Recover.ClusterPositionType = 'PlainEtaPhi' # str
MatchingTool_Recover.DistanceType = 'EtaPhiSquareDistance' # str MatchingTool_Recover.DistanceType = 'EtaPhiSquareDistance' # str
MatchingTool_Recover.MatchCut = 0.2*0.2 # float MatchingTool_Recover.MatchCut = 0.2*0.2 # float
PFRecoverSplitShowersTool.PFTrackClusterMatchingTool = MatchingTool PFRecoverSplitShowersTool.PFTrackClusterMatchingTool = MatchingTool_Recover
PFAlgorithm.SubtractionToolList += [PFRecoverSplitShowersTool] PFAlgorithm.SubtractionToolList += [PFRecoverSplitShowersTool]
......
from AthenaCommon.AthenaCommonFlags import athenaCommonFlags
athenaCommonFlags.FilesInput=["/data/hodgkinson/scratchFiles/mc15_13TeV.361022.Pythia8EvtGen_A14NNPDF23LO_jetjet_JZ2W.recon.ESD.e3668_s2832_r7968/ESD.08355655._001904.pool.root.1"]
doDumpProperties=True
from RecExConfig.RecAlgsFlags import recAlgs
recAlgs.doEFlow.set_Value_and_Lock(True)
from RecExConfig.RecFlags import rec
rec.doEgamma.set_Value_and_Lock(False)
rec.doMuon.set_Value_and_Lock(False)
#change some calo flags
from CaloRec.CaloRecFlags import jobproperties
jobproperties.CaloRecFlags.Enabled.set_Value_and_Lock(True)
jobproperties.CaloRecFlags.doCaloCluster.set_Value_and_Lock(True)
jobproperties.CaloRecFlags.doEmCluster.set_Value_and_Lock(False)
jobproperties.CaloRecFlags.doCaloTopoCluster.set_Value_and_Lock(True)
#this turns off CaloCluster2xAOD
rec.doWritexAOD.set_Value_and_Lock(False)
#nothing to say on these
rec.doWriteTAG.set_Value_and_Lock(False)
rec.doTruth.set_Value_and_Lock(False)
rec.doAODCaloCells.set_Value_and_Lock(False)
rec.doTrigger.set_Value_and_Lock(False)
#Turns off xAODRingSetConfWriter
rec.doCaloRinger.set_Value_and_Lock(False)
#disables VertexCnvAlg
from InDetRecExample.InDetJobProperties import jobproperties
jobproperties.InDetJobProperties.doxAOD.set_Value_and_Lock(False)
#Disables AllExecutedEvents
rec.doFileMetaData.set_Value_and_Lock(False)
athenaCommonFlags.EvtMax=1
include ("RecExCommon/RecExCommon_topOptions.py")
topSequence.CaloTopoCluster.ClustersOutputName="CaloCalTopoClusterV2"
#topSequence.eflowEMCaloObjectBuilder.CalClustersName="CaloCalTopoClusterV2"
topSequence.PFClusterSelector.calClustersName="CaloCalTopoClusterV2"
topSequence.PFOChargedCreatorAlgorithm.PFOOutputName="JetETMissChargedParticleFlowObjectsV2"
#topSequence.PFOChargedCreatorAlgorithm.OutputLevel=DEBUG
topSequence.PFONeutralCreatorAlgorithm.PFOOutputName="JetETMissNeutralParticleFlowObjectsV2"
#topSequence.PFONeutralCreatorAlgorithm.OutputLevel=DEBUG
#topSequence.PFTrackSelector.OutputLevel=DEBUG
#topSequence.PFLeptonSelector.OutputLevel=DEBUG
#topSequence.PFAlgorithm.OutputLevel=DEBUG
#ServiceMgr.MessageSvc.debugLimit = 1000000
import AthenaCommon.PropertiesManip as manip
manip.removeItemsFromList(StreamAOD,'ItemList','xAOD::PFOContainer#JetETMissChargedParticleFlowObjects')
manip.removeItemsFromList(StreamAOD,'ItemList','xAOD::PFOAuxContainer#JetETMissChargedParticleFlowObjectsAux.')
manip.removeItemsFromList(StreamAOD,'ItemList','xAOD::PFOContainer#JetETMissNeutralParticleFlowObjects')
manip.removeItemsFromList(StreamAOD,'ItemList','xAOD::PFOAuxContainer#JetETMissNeutralParticleFlowObjectsAux.')
manip.appendItemsToList(StreamAOD,'ItemList','xAOD::PFOContainer#JetETMissChargedParticleFlowObjectsV2')
manip.appendItemsToList(StreamAOD,'ItemList','xAOD::PFOAuxContainer#JetETMissChargedParticleFlowObjectsV2Aux.')
manip.appendItemsToList(StreamAOD,'ItemList','xAOD::PFOContainer#JetETMissNeutralParticleFlowObjectsV2')
manip.appendItemsToList(StreamAOD,'ItemList','xAOD::PFOAuxContainer#JetETMissNeutralParticleFlowObjectsV2Aux.')
from AthenaCommon.AthenaCommonFlags import athenaCommonFlags
athenaCommonFlags.FilesInput=["/data/hodgkinson/scratchFiles/mc15_13TeV.361022.Pythia8EvtGen_A14NNPDF23LO_jetjet_JZ2W.recon.ESD.e3668_s2832_r7968/ESD.08355655._001904.pool.root.1"]
doDumpProperties=True
from RecExConfig.RecAlgsFlags import recAlgs
recAlgs.doEFlow.set_Value_and_Lock(True)
from RecExConfig.RecFlags import rec
rec.doEgamma.set_Value_and_Lock(False)
rec.doMuon.set_Value_and_Lock(False)
#change some calo flags
from CaloRec.CaloRecFlags import jobproperties
jobproperties.CaloRecFlags.Enabled.set_Value_and_Lock(True)
jobproperties.CaloRecFlags.doCaloCluster.set_Value_and_Lock(True)
jobproperties.CaloRecFlags.doEmCluster.set_Value_and_Lock(False)
jobproperties.CaloRecFlags.doCaloTopoCluster.set_Value_and_Lock(True)
#this turns off CaloCluster2xAOD
rec.doWritexAOD.set_Value_and_Lock(False)
#nothing to say on these
rec.doWriteTAG.set_Value_and_Lock(False)
rec.doTruth.set_Value_and_Lock(False)
rec.doAODCaloCells.set_Value_and_Lock(False)
rec.doTrigger.set_Value_and_Lock(False)
#Turns off xAODRingSetConfWriter
rec.doCaloRinger.set_Value_and_Lock(False)
#disables VertexCnvAlg
from InDetRecExample.InDetJobProperties import jobproperties
jobproperties.InDetJobProperties.doxAOD.set_Value_and_Lock(False)
#Disables AllExecutedEvents
rec.doFileMetaData.set_Value_and_Lock(False)
athenaCommonFlags.EvtMax=1
include ("RecExCommon/RecExCommon_topOptions.py")
topSequence.CaloTopoCluster.ClustersOutputName="CaloCalTopoClusterV2"
topSequence.eflowEMCaloObjectBuilder.CalClustersName="CaloCalTopoClusterV2"
#topSequence.eflowObjectBuilder_EM.OutputLevel=DEBUG
#topSequence.eflowCaloObjectBuilder_EM.OutputLevel=DEBUG
#topSequence.eflowEMCaloObjectBuilder.OutputLevel=DEBUG
eflowObjectCreatorTool_update = topSequence.eflowObjectBuilder_EM.PrivateToolList[2]
eflowObjectCreatorTool_update.PFOOutputName="JetETMissV2"
topSequence.eflowVertextInformationSetter_EM.PFOInputName="JetETMissV2NeutralParticleFlowObjects"
topSequence.eflowOverlapRemoval_EM.PFOInputName="JetETMissV2NeutralParticleFlowObjects"
import AthenaCommon.PropertiesManip as manip
manip.removeItemsFromList(StreamAOD,'ItemList','xAOD::PFOContainer#JetETMissChargedParticleFlowObjects')
manip.removeItemsFromList(StreamAOD,'ItemList','xAOD::PFOAuxContainer#JetETMissChargedParticleFlowObjectsAux.')
manip.removeItemsFromList(StreamAOD,'ItemList','xAOD::PFOContainer#JetETMissNeutralParticleFlowObjects')
manip.removeItemsFromList(StreamAOD,'ItemList','xAOD::PFOAuxContainer#JetETMissNeutralParticleFlowObjectsAux.')
manip.appendItemsToList(StreamAOD,'ItemList','xAOD::PFOContainer#JetETMissV2ChargedParticleFlowObjects')
manip.appendItemsToList(StreamAOD,'ItemList','xAOD::PFOAuxContainer#JetETMissV2ChargedParticleFlowObjectsAux.')
manip.appendItemsToList(StreamAOD,'ItemList','xAOD::PFOContainer#JetETMissV2NeutralParticleFlowObjects')
manip.appendItemsToList(StreamAOD,'ItemList','xAOD::PFOAuxContainer#JetETMissV2NeutralParticleFlowObjectsAux.')
#ServiceMgr.MessageSvc.debugLimit = 1000000
...@@ -178,6 +178,11 @@ int PFRecoverSplitShowersTool::matchAndCreateEflowCaloObj() { ...@@ -178,6 +178,11 @@ int PFRecoverSplitShowersTool::matchAndCreateEflowCaloObj() {
} }
/* Get list of matched clusters */ /* Get list of matched clusters */
std::vector<eflowRecCluster*> matchedClusters = m_matchingTool->doMatches(thisEfRecTrack, m_clustersToConsider, -1); std::vector<eflowRecCluster*> matchedClusters = m_matchingTool->doMatches(thisEfRecTrack, m_clustersToConsider, -1);
if (msgLvl(MSG::DEBUG)){
for (auto thisEFRecCluster : matchedClusters) ATH_MSG_DEBUG("Have matched cluster with e, eta, phi of " << thisEFRecCluster->getCluster()->e() << ", " << thisEFRecCluster->getCluster()->eta() << " and " << thisEFRecCluster->getCluster()->phi());
}
if (matchedClusters.empty()) { continue; } if (matchedClusters.empty()) { continue; }
m_nTrackClusterMatches += matchedClusters.size(); m_nTrackClusterMatches += matchedClusters.size();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment