LArSoft  v07_13_02
Liquid Argon Software toolkit - http://larsoft.org/
LArContent.cc
Go to the documentation of this file.
1 
9 #include "Api/PandoraApi.h"
10 
11 #include "Pandora/Algorithm.h"
12 #include "Pandora/AlgorithmTool.h"
13 #include "Pandora/Pandora.h"
14 
29 
40 
43 
45 
53 
56 
58 
66 
76 
85 
89 
93 
96 
101 
106 
109 
119 
125 
131 
140 
144 
150 
155 
164 
166 
171 
176 
178 
179 #define LAR_ALGORITHM_LIST(d) \
180  d("LArEventValidation", EventValidationAlgorithm) \
181  d("LArPfoValidation", PfoValidationAlgorithm) \
182  d("LArMCParticleMonitoring", MCParticleMonitoringAlgorithm) \
183  d("LArVisualMonitoring", VisualMonitoringAlgorithm) \
184  d("LArEventReading", EventReadingAlgorithm) \
185  d("LArEventWriting", EventWritingAlgorithm) \
186  d("LArCheatingClusterCharacterisation", CheatingClusterCharacterisationAlgorithm) \
187  d("LArCheatingClusterCreation", CheatingClusterCreationAlgorithm) \
188  d("LArCheatingCosmicRayIdentification", CheatingCosmicRayIdentificationAlg) \
189  d("LArCheatingCosmicRayShowerMatching", CheatingCosmicRayShowerMatchingAlg) \
190  d("LArCheatingNeutrinoCreation", CheatingNeutrinoCreationAlgorithm) \
191  d("LArCheatingNeutrinoDaughterVertices", CheatingNeutrinoDaughterVerticesAlgorithm) \
192  d("LArCheatingPfoCharacterisation", CheatingPfoCharacterisationAlgorithm) \
193  d("LArCheatingPfoCreation", CheatingPfoCreationAlgorithm) \
194  d("LArCheatingCosmicRayRemoval", CheatingCosmicRayRemovalAlgorithm) \
195  d("LArCheatingVertexCreation", CheatingVertexCreationAlgorithm) \
196  d("LArPcaShowerParticleBuilding", PcaShowerParticleBuildingAlgorithm) \
197  d("LArMaster", MasterAlgorithm) \
198  d("LArPostProcessing", PostProcessingAlgorithm) \
199  d("LArPreProcessing", PreProcessingAlgorithm) \
200  d("LArSlicing", SlicingAlgorithm) \
201  d("LArTrackParticleBuilding", TrackParticleBuildingAlgorithm) \
202  d("LArNeutrinoCreation", NeutrinoCreationAlgorithm) \
203  d("LArNeutrinoDaughterVertices", NeutrinoDaughterVerticesAlgorithm) \
204  d("LArNeutrinoHierarchy", NeutrinoHierarchyAlgorithm) \
205  d("LArNeutrinoProperties", NeutrinoPropertiesAlgorithm) \
206  d("LArTestBeamParticleCreation", TestBeamParticleCreationAlgorithm) \
207  d("LArCosmicRayShowerMatching", CosmicRayShowerMatchingAlgorithm) \
208  d("LArCosmicRayTrackMatching", CosmicRayTrackMatchingAlgorithm) \
209  d("LArCosmicRayTrackRecovery", CosmicRayTrackRecoveryAlgorithm) \
210  d("LArCosmicRayVertexBuilding", CosmicRayVertexBuildingAlgorithm) \
211  d("LArDeltaRayIdentification", DeltaRayIdentificationAlgorithm) \
212  d("LArDeltaRayMatching", DeltaRayMatchingAlgorithm) \
213  d("LArUnattachedDeltaRays", UnattachedDeltaRaysAlgorithm) \
214  d("LArThreeDHitCreation", ThreeDHitCreationAlgorithm) \
215  d("LArThreeDLongitudinalTracks", ThreeDLongitudinalTracksAlgorithm) \
216  d("LArSlidingConePfoMopUp", SlidingConePfoMopUpAlgorithm) \
217  d("LArShowerPfoMopUp", ShowerPfoMopUpAlgorithm) \
218  d("LArVertexBasedPfoMopUp", VertexBasedPfoMopUpAlgorithm) \
219  d("LArParticleRecovery", ParticleRecoveryAlgorithm) \
220  d("LArVertexBasedPfoRecovery", VertexBasedPfoRecoveryAlgorithm) \
221  d("LArThreeDRemnants", ThreeDRemnantsAlgorithm) \
222  d("LArThreeDShowers", ThreeDShowersAlgorithm) \
223  d("LArThreeDTrackFragments", ThreeDTrackFragmentsAlgorithm) \
224  d("LArThreeDTransverseTracks", ThreeDTransverseTracksAlgorithm) \
225  d("LArCutClusterCharacterisation", CutClusterCharacterisationAlgorithm) \
226  d("LArCutPfoCharacterisation", CutPfoCharacterisationAlgorithm) \
227  d("LArShowerGrowing", ShowerGrowingAlgorithm) \
228  d("LArSvmPfoCharacterisation", SvmPfoCharacterisationAlgorithm) \
229  d("LArCrossGapsAssociation", CrossGapsAssociationAlgorithm) \
230  d("LArCrossGapsExtension", CrossGapsExtensionAlgorithm) \
231  d("LArLongitudinalAssociation", LongitudinalAssociationAlgorithm) \
232  d("LArLongitudinalExtension", LongitudinalExtensionAlgorithm) \
233  d("LArSimpleClusterGrowing", SimpleClusterGrowingAlgorithm) \
234  d("LArSimpleClusterMerging", SimpleClusterMergingAlgorithm) \
235  d("LArTransverseAssociation", TransverseAssociationAlgorithm) \
236  d("LArTransverseExtension", TransverseExtensionAlgorithm) \
237  d("LArSimpleClusterCreation", SimpleClusterCreationAlgorithm) \
238  d("LArTrackClusterCreation", TrackClusterCreationAlgorithm) \
239  d("LArClusteringParent", ClusteringParentAlgorithm) \
240  d("LArBoundedClusterMopUp", BoundedClusterMopUpAlgorithm) \
241  d("LArConeClusterMopUp", ConeClusterMopUpAlgorithm) \
242  d("LArIsolatedClusterMopUp", IsolatedClusterMopUpAlgorithm) \
243  d("LArNearbyClusterMopUp", NearbyClusterMopUpAlgorithm) \
244  d("LArSlidingConeClusterMopUp", SlidingConeClusterMopUpAlgorithm) \
245  d("LArCosmicRayExtension", CosmicRayExtensionAlgorithm) \
246  d("LArCosmicRaySplitting", CosmicRaySplittingAlgorithm) \
247  d("LArDeltaRayExtension", DeltaRayExtensionAlgorithm) \
248  d("LArDeltaRayGrowing", DeltaRayGrowingAlgorithm) \
249  d("LArBranchSplitting", BranchSplittingAlgorithm) \
250  d("LArCrossedTrackSplitting", CrossedTrackSplittingAlgorithm) \
251  d("LArDeltaRaySplitting", DeltaRaySplittingAlgorithm) \
252  d("LArKinkSplitting", KinkSplittingAlgorithm) \
253  d("LArLayerSplitting", LayerSplittingAlgorithm) \
254  d("LArOvershootSplitting", OvershootSplittingAlgorithm) \
255  d("LArTrackConsolidation", TrackConsolidationAlgorithm) \
256  d("LArVertexSplitting", VertexSplittingAlgorithm) \
257  d("LArTwoDParticleCreation", TwoDParticleCreationAlgorithm) \
258  d("LArListChanging", ListChangingAlgorithm) \
259  d("LArListDeletion", ListDeletionAlgorithm) \
260  d("LArListMerging", ListMergingAlgorithm) \
261  d("LArListPruning", ListPruningAlgorithm) \
262  d("LArCandidateVertexCreation", CandidateVertexCreationAlgorithm) \
263  d("LArEnergyKickVertexSelection", EnergyKickVertexSelectionAlgorithm) \
264  d("LArHitAngleVertexSelection", HitAngleVertexSelectionAlgorithm) \
265  d("LArSvmVertexSelection", SvmVertexSelectionAlgorithm)
266 
267 #define LAR_ALGORITHM_TOOL_LIST(d) \
268  d("LArBdtBeamParticleId", BdtBeamParticleIdTool) \
269  d("LArBeamParticleId", BeamParticleIdTool) \
270  d("LArCosmicRayTagging", CosmicRayTaggingTool) \
271  d("LArNeutrinoId", NeutrinoIdTool) \
272  d("LArSimpleNeutrinoId", SimpleNeutrinoIdTool) \
273  d("LArStitchingCosmicRayMerging", StitchingCosmicRayMergingTool) \
274  d("LArCosmicRayTaggingMonitoring", CosmicRayTaggingMonitoringTool) \
275  d("LArShowerTensorVisualization", ShowerTensorVisualizationTool) \
276  d("LArTransverseTensorVisualization", TransverseTensorVisualizationTool) \
277  d("LArCheatingBeamParticleId", CheatingBeamParticleIdTool) \
278  d("LArCheatingEventSlicing", CheatingEventSlicingTool) \
279  d("LArCheatingCosmicRayTagging", CheatingCosmicRayTaggingTool) \
280  d("LArCheatingNeutrinoId", CheatingNeutrinoIdTool) \
281  d("LArBranchAssociatedPfos", BranchAssociatedPfosTool) \
282  d("LArEndAssociatedPfos", EndAssociatedPfosTool) \
283  d("LArEventSlicing", EventSlicingTool) \
284  d("LArVertexAssociatedPfos", VertexAssociatedPfosTool) \
285  d("LArClearShowers", ClearShowersTool) \
286  d("LArSimpleShowers", SimpleShowersTool) \
287  d("LArSplitShowers", SplitShowersTool) \
288  d("LArClearTrackFragments", ClearTrackFragmentsTool) \
289  d("LArClearLongitudinalTrackHits", ClearLongitudinalTrackHitsTool) \
290  d("LArClearTransverseTrackHits", ClearTransverseTrackHitsTool) \
291  d("LArDeltaRayShowerHits", DeltaRayShowerHitsTool) \
292  d("LArMultiValuedLongitudinalTrackHits", MultiValuedLongitudinalTrackHitsTool) \
293  d("LArMultiValuedTransverseTrackHits", MultiValuedTransverseTrackHitsTool) \
294  d("LArThreeViewShowerHits", ThreeViewShowerHitsTool) \
295  d("LArTwoViewShowerHits", TwoViewShowerHitsTool) \
296  d("LArClearLongitudinalTracks", ClearLongitudinalTracksTool) \
297  d("LArMatchedEndPoints", MatchedEndPointsTool) \
298  d("LArClearRemnants", ClearRemnantsTool) \
299  d("LArConnectedRemnants", ConnectedRemnantsTool) \
300  d("LArMopUpRemnants", MopUpRemnantsTool) \
301  d("LArClearTracks", ClearTracksTool) \
302  d("LArLongTracks", LongTracksTool) \
303  d("LArMissingTrack", MissingTrackTool) \
304  d("LArMissingTrackSegment", MissingTrackSegmentTool) \
305  d("LArOvershootTracks", OvershootTracksTool) \
306  d("LArTracksCrossingGaps", TracksCrossingGapsTool) \
307  d("LArTrackSplitting", TrackSplittingTool) \
308  d("LArUndershootTracks", UndershootTracksTool) \
309  d("LArEnergyKickFeature", EnergyKickFeatureTool) \
310  d("LArGlobalAsymmetryFeature", GlobalAsymmetryFeatureTool) \
311  d("LArLocalAsymmetryFeature", LocalAsymmetryFeatureTool) \
312  d("LArRPhiFeature", RPhiFeatureTool) \
313  d("LArShowerAsymmetryFeature", ShowerAsymmetryFeatureTool) \
314  d("LArTwoDLinearFitFeatureTool", TwoDLinearFitFeatureTool) \
315  d("LArThreeDLinearFitFeatureTool", ThreeDLinearFitFeatureTool) \
316  d("LArTwoDVertexDistanceFeatureTool", TwoDVertexDistanceFeatureTool) \
317  d("LArThreeDVertexDistanceFeatureTool", ThreeDVertexDistanceFeatureTool) \
318  d("LArThreeDChargeFeatureTool", ThreeDChargeFeatureTool) \
319  d("LArThreeDPCAFeatureTool", ThreeDPCAFeatureTool) \
320  d("LArThreeDOpeningAngleFeatureTool", ThreeDOpeningAngleFeatureTool)
321 
322 #define LAR_PARTICLE_ID_LIST(d) \
323  d("LArMuonId", LArParticleIdPlugins::LArMuonId)
324 
325 #define FACTORY Factory
326 
327 //------------------------------------------------------------------------------------------------------------------------------------------
328 //------------------------------------------------------------------------------------------------------------------------------------------
329 
330 namespace lar_content
331 {
332 
333 #define LAR_CONTENT_CREATE_ALGORITHM_FACTORY(a, b) \
334 class b##FACTORY : public pandora::AlgorithmFactory \
335 { \
336 public: \
337  pandora::Algorithm *CreateAlgorithm() const {return new b;}; \
338 };
339 
341 
342 //------------------------------------------------------------------------------------------------------------------------------------------
343 
344 #define LAR_CONTENT_CREATE_ALGORITHM_TOOL_FACTORY(a, b) \
345 class b##FACTORY : public pandora::AlgorithmToolFactory \
346 { \
347 public: \
348  pandora::AlgorithmTool *CreateAlgorithmTool() const {return new b;}; \
349 };
350 
352 
353 } // namespace lar_content
354 
355 //------------------------------------------------------------------------------------------------------------------------------------------
356 //------------------------------------------------------------------------------------------------------------------------------------------
357 
358 #define LAR_CONTENT_REGISTER_ALGORITHM(a, b) \
359 { \
360  const pandora::StatusCode statusCode(PandoraApi::RegisterAlgorithmFactory(pandora, a, new lar_content::b##FACTORY)); \
361  if (pandora::STATUS_CODE_SUCCESS != statusCode) \
362  return statusCode; \
363 }
364 
365 #define LAR_CONTENT_REGISTER_ALGORITHM_TOOL(a, b) \
366 { \
367  const pandora::StatusCode statusCode(PandoraApi::RegisterAlgorithmToolFactory(pandora, a, new lar_content::b##FACTORY)); \
368  if (pandora::STATUS_CODE_SUCCESS != statusCode) \
369  return statusCode; \
370 }
371 
372 pandora::StatusCode LArContent::RegisterAlgorithms(const pandora::Pandora &pandora)
373 {
376  return pandora::STATUS_CODE_SUCCESS;
377 }
378 
379 //------------------------------------------------------------------------------------------------------------------------------------------
380 
381 #define LAR_CONTENT_REGISTER_PARTICLE_ID(a, b) \
382 { \
383  const pandora::StatusCode statusCode(PandoraApi::RegisterParticleIdPlugin(pandora, a, new lar_content::b)); \
384  if (pandora::STATUS_CODE_SUCCESS != statusCode) \
385  return statusCode; \
386 }
387 
388 pandora::StatusCode LArContent::RegisterBasicPlugins(const pandora::Pandora &pandora)
389 {
391  return pandora::STATUS_CODE_SUCCESS;
392 }
Header file for the cheating cosmic ray removal algorithm class.
Header file for the clustering parent algorithm class.
Header file for the cosmic ray identification cheater class.
Header file for the longitudinal association algorithm class.
Header file for the clear showers tool class.
Header file for the event writing algorithm class.
Header file for the cut based pfo characterisation algorithm class.
Header file for the neutrino id tool class.
Header file for the cut based cluster characterisation algorithm class.
Header file for the mc particle monitoring algorithm.
Header file for the three view shower hits tool.
Header file for the clear tracks tool class.
#define LAR_CONTENT_CREATE_ALGORITHM_FACTORY(a, b)
Definition: LArContent.cc:333
Header file for the clear track fragments tool class.
Header file for the cosmic ray splitting algorithm class.
Header file for the missing track segment tool class.
Header file for the sliding cone cluster mop up algorithm class.
Header file for the cosmic-ray tagging monitoring tool class.
Header file for the transverse tensor visualization tool class.
#define LAR_ALGORITHM_TOOL_LIST(d)
Definition: LArContent.cc:267
Header file for the cosmic-ray extension algorithm class.
Header file for the multivalued transverse track hit creation tool.
Header file for the pfo validation algorithm.
Header file for the track splitting tool class.
Header file for the overshoot splitting algorithm class.
Header file for the clear remnants tool class.
Header file for the vertex splitting algorithm class.
Header file for the branch associated pfos tool class.
Header file for the cross gaps association algorithm class.
Header file for the bounded cluster mop up algorithm class.
Header file for the multivalued longitudinal track hit creation tool.
Header file for the crossed track splitting algorithm class.
#define LAR_PARTICLE_ID_LIST(d)
Definition: LArContent.cc:322
#define LAR_CONTENT_REGISTER_ALGORITHM_TOOL(a, b)
Definition: LArContent.cc:365
Header file for the clear tracks tool class.
Header file for the neutrino daughter vertices algorithm class.
Header file for the lar particle id plugins class.
#define LAR_ALGORITHM_LIST(d)
Definition: LArContent.cc:179
Header file for the cheating cluster characterisation algorithm class.
Header file for the cosmic-ray vertex building algorithm class.
Header file for the svm pfo characterisation algorithm class.
Header file for the 3D track building algorithm class.
Header file for the list merging algorithm class.
Header file for the mop-up remnants tool class.
Header file for the split showers tool class.
Header file for the track consolidation algorithm class.
Header file for the cosmic ray shower matching cheater class.
Header file for the simple cluster growing algorithm class.
Header file for the cosmic ray shower matching algorithm class.
Header file for the three dimensional hit creation algorithm class.
Header file for the list pruning algorithm class.
Header file for the geometry helper class.
Header file for the candidate vertex creation algorithm class.
Header file for the cone cluster mop up algorithm class.
Header file for the cheating event slicing tool class.
Header file for the simple cluster merging algorithm class.
Header file for the cheating cluster creation algorithm class.
Header file for the beam particle id tool class.
Header file for the event validation algorithm.
Header file for the cheating vertex creation algorithm class.
Header file for the track shower id feature tools.
Header file for the neutrino creation algorithm class.
Header file for the delta ray extension algorithm class.
Header file for the cheating beam particle id tool class.
Header file for the cluster creation algorithm class.
Header file for the beam particle id tool class.
Header file for the master algorithm class.
Header file for the delta ray splitting algorithm class.
Header file for the cheating pfo characterisation algorithm class.
Header file for the list changing algorithm class.
Header file for the energy kick vertex selection algorithm class.
Header file for the post processing algorithm class.
Header file for the neutrino id tool class.
static pandora::StatusCode RegisterBasicPlugins(const pandora::Pandora &pandora)
Register the basic lar content plugins with pandora.
Definition: LArContent.cc:388
Header file for the neutrino properties algorithm class.
Header file for the cheating neutrino daughter vertices algorithm class.
Header file for the cheating cosmic-ray tagging tool class.
Header file for the three dimensional remnants algorithm class.
Header file for the event slicing tool class.
Header file for the cheating cluster creation algorithm class.
Header file for the two view shower hits tool.
#define LAR_CONTENT_REGISTER_ALGORITHM(a, b)
Definition: LArContent.cc:358
Header file for the missing track tool class.
Header file for the unattached delta rays algorithm class.
Header file for the vertex associated pfos tool class.
Header file for the delta ray matching algorithm class.
Header file for the local asymmetry feature tool class.
Header file for the sliding cone pfo mop up algorithm class.
Header file for the long tracks tool class.
Header file for the end associated pfos tool class.
Header file for the neutrino hierarchy algorithm class.
Header file for the three dimensional fragments algorithm base class.
Header file for the branch splitting algorithm class.
Header file for the isolated cluster mop up algorithm class.
Header file for the overshoot tracks tool class.
static pandora::StatusCode RegisterAlgorithms(const pandora::Pandora &pandora)
Register all the lar content algorithms and tools with pandora.
Definition: LArContent.cc:372
#define LAR_CONTENT_REGISTER_PARTICLE_ID(a, b)
Definition: LArContent.cc:381
Header file for the svm vertex selection algorithm class.
Header file for the matched end points tool class.
Header file for the hit angle vertex selection algorithm class.
#define LAR_CONTENT_CREATE_ALGORITHM_TOOL_FACTORY(a, b)
Definition: LArContent.cc:344
Header file for the shower growing algorithm class.
Header file for the three dimensional transverse tracks algorithm class.
Header file for the event reading algorithm class.
Header file for the transverse extension algorithm class.
Header file for the simple showers tool class.
Header file for the track recovery algorithm class.
Header file for the shower pfo mop up algorithm class.
Header file for the clear longitudinal track hit creation tool.
Header file for the clear transverse track hit creation tool.
Header file detailing content for use with particle flow reconstruction at liquid argon time projecti...
Header file for the shower tensor visualization tool class.
Header file for the cosmic-ray tagging tool class.
Header file for the visual monitoring algorithm class.
Header file for the two dimensional particle creation algorithm class.
Header file for the longitudinal extension algorithm class.
Header file for the shower asymmetry feature tool class.
Header file for the cheating neutrino creation algorithm class.
Header file for the nearby cluster mop up algorithm class.
Header file for the connected remnants tool class.
Header file for the three dimensional showers algorithm class.
Header file for the energy kick feature tool class.
Header file for the transverse association algorithm class.
Header file for the undershoot tracks tool class.
Header file for the delta ray shower hits tool.
Header file for the master algorithm class.
Header file for the test beam particle creation algorithm class.
Header file for the vertex-based particle recovery algorithm.
Header file for the neutrino event creation algorithm class.
Header file for the cheating neutrino id tool class.
Header file for the kink splitting algorithm class.
Header file for the pre processing algorithm class.
Header file for the delta ray identification algorithm class.
Header file for the cluster creation algorithm class.
Header file for the vertex based pfo mop up algorithm class.
Header file for the cosmic ray longitudinal track recovery algorithm class.
Header file for the long tracks tool class.
Header file for the list deletion algorithm class.
Header file for the cross gaps extension algorithm class.
Header file for the r/phi feature tool class.
Header file for the cosmic ray track matching algorithm class.
Header file for the three dimensional longitudinal tracks algorithm class.
Header file for the global asymmetry feature tool class.