LArSoft  v07_13_02
Liquid Argon Software toolkit - http://larsoft.org/
lar_content::LArMCParticleFactory Class Reference

LArMCParticleFactory responsible for object creation. More...

#include "LArMCParticle.h"

Inheritance diagram for lar_content::LArMCParticleFactory:

Public Member Functions

Parameters * NewParameters () const
 Create new parameters instance on the heap (memory-management to be controlled by user) More...
 
pandora::StatusCode Read (Parameters &parameters, pandora::FileReader &fileReader) const
 Read any additional (derived class only) object parameters from file using the specified file reader. More...
 
pandora::StatusCode Write (const Object *const pObject, pandora::FileWriter &fileWriter) const
 Persist any additional (derived class only) object parameters using the specified file writer. More...
 
pandora::StatusCode Create (const Parameters &parameters, const Object *&pObject) const
 Create an object with the given parameters. More...
 

Detailed Description

LArMCParticleFactory responsible for object creation.

Definition at line 64 of file LArMCParticle.h.

Member Function Documentation

pandora::StatusCode lar_content::LArMCParticleFactory::Create ( const Parameters &  parameters,
const Object *&  pObject 
) const
inline

Create an object with the given parameters.

Parameters
parametersthe parameters to pass in constructor
pObjectto receive the address of the object created

Definition at line 125 of file LArMCParticle.h.

References lar_content::LArMCParticle::LArMCParticle().

126 {
127  const LArMCParticleParameters &larMCParticleParameters(dynamic_cast<const LArMCParticleParameters&>(parameters));
128  pObject = new LArMCParticle(larMCParticleParameters);
129 
130  return pandora::STATUS_CODE_SUCCESS;
131 }
LArMCParticleFactory::Parameters * lar_content::LArMCParticleFactory::NewParameters ( ) const
inline

Create new parameters instance on the heap (memory-management to be controlled by user)

Returns
the address of the new parameters instance

Definition at line 118 of file LArMCParticle.h.

119 {
120  return (new LArMCParticleParameters);
121 }
pandora::StatusCode lar_content::LArMCParticleFactory::Read ( Parameters &  parameters,
pandora::FileReader &  fileReader 
) const
inline

Read any additional (derived class only) object parameters from file using the specified file reader.

Parameters
parametersthe parameters to pass in constructor
fileReaderthe file reader, used to extract any additional parameters from file

Definition at line 135 of file LArMCParticle.h.

References lar_content::LArMCParticleParameters::m_nuanceCode.

136 {
137  // ATTN: To receive this call-back must have already set file reader mc particle factory to this factory
138  int nuanceCode(0);
139 
140  if (pandora::BINARY == fileReader.GetFileType())
141  {
142  pandora::BinaryFileReader &binaryFileReader(dynamic_cast<pandora::BinaryFileReader&>(fileReader));
143  PANDORA_RETURN_RESULT_IF(pandora::STATUS_CODE_SUCCESS, !=, binaryFileReader.ReadVariable(nuanceCode));
144  }
145  else if (pandora::XML == fileReader.GetFileType())
146  {
147  pandora::XmlFileReader &xmlFileReader(dynamic_cast<pandora::XmlFileReader&>(fileReader));
148  PANDORA_RETURN_RESULT_IF(pandora::STATUS_CODE_SUCCESS, !=, xmlFileReader.ReadVariable("NuanceCode", nuanceCode));
149  }
150  else
151  {
152  return pandora::STATUS_CODE_INVALID_PARAMETER;
153  }
154 
155  LArMCParticleParameters &larMCParticleParameters(dynamic_cast<LArMCParticleParameters&>(parameters));
156  larMCParticleParameters.m_nuanceCode = nuanceCode;
157 
158  return pandora::STATUS_CODE_SUCCESS;
159 }
pandora::StatusCode lar_content::LArMCParticleFactory::Write ( const Object *const  pObject,
pandora::FileWriter &  fileWriter 
) const
inline

Persist any additional (derived class only) object parameters using the specified file writer.

Parameters
pObjectthe address of the object to persist
fileWriterthe file writer

Definition at line 163 of file LArMCParticle.h.

References lar_content::LArMCParticle::GetNuanceCode().

164 {
165  // ATTN: To receive this call-back must have already set file writer mc particle factory to this factory
166  const LArMCParticle *const pLArMCParticle(dynamic_cast<const LArMCParticle*>(pObject));
167 
168  if (!pLArMCParticle)
169  return pandora::STATUS_CODE_INVALID_PARAMETER;
170 
171  if (pandora::BINARY == fileWriter.GetFileType())
172  {
173  pandora::BinaryFileWriter &binaryFileWriter(dynamic_cast<pandora::BinaryFileWriter&>(fileWriter));
174  PANDORA_RETURN_RESULT_IF(pandora::STATUS_CODE_SUCCESS, !=, binaryFileWriter.WriteVariable(pLArMCParticle->GetNuanceCode()));
175  }
176  else if (pandora::XML == fileWriter.GetFileType())
177  {
178  pandora::XmlFileWriter &xmlFileWriter(dynamic_cast<pandora::XmlFileWriter&>(fileWriter));
179  PANDORA_RETURN_RESULT_IF(pandora::STATUS_CODE_SUCCESS, !=, xmlFileWriter.WriteVariable("NuanceCode", pLArMCParticle->GetNuanceCode()));
180  }
181  else
182  {
183  return pandora::STATUS_CODE_INVALID_PARAMETER;
184  }
185 
186  return pandora::STATUS_CODE_SUCCESS;
187 }

The documentation for this class was generated from the following file: