Public Member Functions | Private Attributes | List of all members
detsim::DriftElectronstoPlane Class Reference
Inheritance diagram for detsim::DriftElectronstoPlane:
art::EDProducer art::detail::Producer art::detail::LegacyModule art::Modifier art::ModuleBase art::ProductRegistryHelper

Public Member Functions

 DriftElectronstoPlane (fhicl::ParameterSet const &pset)
 
void produce (art::Event &evt) override
 
void beginJob () override
 
- Public Member Functions inherited from art::EDProducer
 EDProducer (fhicl::ParameterSet const &pset)
 
template<typename Config >
 EDProducer (Table< Config > const &config)
 
std::string workerType () const
 
- Public Member Functions inherited from art::detail::Producer
virtual ~Producer () noexcept
 
 Producer (fhicl::ParameterSet const &)
 
 Producer (Producer const &)=delete
 
 Producer (Producer &&)=delete
 
Produceroperator= (Producer const &)=delete
 
Produceroperator= (Producer &&)=delete
 
void doBeginJob (SharedResources const &resources)
 
void doEndJob ()
 
void doRespondToOpenInputFile (FileBlock const &fb)
 
void doRespondToCloseInputFile (FileBlock const &fb)
 
void doRespondToOpenOutputFiles (FileBlock const &fb)
 
void doRespondToCloseOutputFiles (FileBlock const &fb)
 
bool doBeginRun (RunPrincipal &rp, ModuleContext const &mc)
 
bool doEndRun (RunPrincipal &rp, ModuleContext const &mc)
 
bool doBeginSubRun (SubRunPrincipal &srp, ModuleContext const &mc)
 
bool doEndSubRun (SubRunPrincipal &srp, ModuleContext const &mc)
 
bool doEvent (EventPrincipal &ep, ModuleContext const &mc, std::atomic< std::size_t > &counts_run, std::atomic< std::size_t > &counts_passed, std::atomic< std::size_t > &counts_failed)
 
- Public Member Functions inherited from art::Modifier
 ~Modifier () noexcept
 
 Modifier ()
 
 Modifier (Modifier const &)=delete
 
 Modifier (Modifier &&)=delete
 
Modifieroperator= (Modifier const &)=delete
 
Modifieroperator= (Modifier &&)=delete
 
- Public Member Functions inherited from art::ModuleBase
virtual ~ModuleBase () noexcept
 
 ModuleBase ()
 
ModuleDescription const & moduleDescription () const
 
void setModuleDescription (ModuleDescription const &)
 
std::array< std::vector< ProductInfo >, NumBranchTypes > const & getConsumables () const
 
void sortConsumables (std::string const &current_process_name)
 
template<typename T , BranchType BT>
ViewToken< T > consumesView (InputTag const &tag)
 
template<typename T , BranchType BT>
ViewToken< T > mayConsumeView (InputTag const &tag)
 

Private Attributes

art::InputTag fSimModuleLabel
 
CLHEP::RandGauss fRandGauss
 
bool fStoreDriftedElectronClusters
 
double fLongitudinalDiffusion
 
double fTransverseDiffusion
 
double fElectronClusterSize
 
int fMinNumberOfElCluster
 
double fGeVToElectrons
 
double fRecombA
 
double fRecombk
 
double fModBoxA
 
double fModBoxB
 
bool fUseModBoxRecomb
 
double fElectronLifetime
 
double fLifetimeCorr_const
 
double fLDiff_const
 
double fTDiff_const
 
double fRecipDriftVel [3]
 
size_t fNCryostats
 
std::vector< size_t > fNTPCs
 
std::vector< double > fLongDiff
 
std::vector< double > fTransDiff1
 
std::vector< double > fTransDiff2
 
std::vector< double > fnElDiff
 
std::vector< double > fnEnDiff
 
double fDriftClusterPos [3]
 
art::ServiceHandle< geo::Geometry const > fGeometry
 Handle to the Geometry service. More...
 
ISCalculationSeparate fISAlg
 

Additional Inherited Members

- Public Types inherited from art::EDProducer
using ModuleType = EDProducer
 
using WorkerType = WorkerT< EDProducer >
 
- Public Types inherited from art::detail::Producer
template<typename UserConfig , typename KeysToIgnore = void>
using Table = Modifier::Table< UserConfig, KeysToIgnore >
 
- Public Types inherited from art::Modifier
template<typename UserConfig , typename UserKeysToIgnore = void>
using Table = ProducerTable< UserConfig, detail::ModuleConfig, UserKeysToIgnore >
 
- Static Public Member Functions inherited from art::EDProducer
static void commitEvent (EventPrincipal &ep, Event &e)
 
- Protected Member Functions inherited from art::ModuleBase
ConsumesCollectorconsumesCollector ()
 
template<typename T , BranchType = InEvent>
ProductToken< T > consumes (InputTag const &)
 
template<typename Element , BranchType = InEvent>
ViewToken< Element > consumesView (InputTag const &)
 
template<typename T , BranchType = InEvent>
void consumesMany ()
 
template<typename T , BranchType = InEvent>
ProductToken< T > mayConsume (InputTag const &)
 
template<typename Element , BranchType = InEvent>
ViewToken< Element > mayConsumeView (InputTag const &)
 
template<typename T , BranchType = InEvent>
void mayConsumeMany ()
 

Detailed Description

Definition at line 81 of file DriftElectronstoPlane_module.cc.

Constructor & Destructor Documentation

detsim::DriftElectronstoPlane::DriftElectronstoPlane ( fhicl::ParameterSet const &  pset)
explicit

Definition at line 137 of file DriftElectronstoPlane_module.cc.

138  : art::EDProducer{pset}
139  , fSimModuleLabel{pset.get<art::InputTag>("SimulationLabel")}
140  // create a default random engine; obtain the random seed from
141  // NuRandomService, unless overridden in configuration with key
142  // "Seed"
143  , fRandGauss{art::ServiceHandle<rndm::NuRandomService>{}->createEngine(*this, pset, "Seed")}
144  , fStoreDriftedElectronClusters{pset.get<bool>("StoreDriftedElectronClusters", true)}
145  , fLongitudinalDiffusion{pset.get<double>("LongitudinalDiffusion", 6.2e-9)}
146  , fTransverseDiffusion{pset.get<double>("TransverseDiffusion", 16.3e-9)}
147  , fElectronClusterSize{pset.get<double>("ElectronClusterSize", 600.0)}
148  , fMinNumberOfElCluster{pset.get<int>("MinNumberOfElCluster", 0)}
149  , fGeVToElectrons{pset.get<double>("GeVToElectrons", 4.237e+07)}
150  , fRecombA{pset.get<double>("RecombA", 0.800)}
151  , fRecombk{pset.get<double>("Recombk", 0.0486)}
152  , fModBoxA{pset.get<double>("ModBoxA", 0.930)}
153  , fModBoxB{pset.get<double>("ModBoxB", 0.212)}
154  , fUseModBoxRecomb{pset.get<bool>("UseModBoxRecomb", true)}
155  , fISAlg{pset}
156  {
157  if (fStoreDriftedElectronClusters) { produces<std::vector<sim::SimDriftedElectronCluster>>(); }
158  }

Member Function Documentation

void detsim::DriftElectronstoPlane::beginJob ( )
overridevirtual

Reimplemented from art::EDProducer.

Definition at line 162 of file DriftElectronstoPlane_module.cc.

163  {
164  // Define the physical constants we'll use.
165 
166  auto const detProp =
169  detProp
170  .ElectronLifetime(); // Electron lifetime as returned by the DetectorProperties service assumed to be in us;
171  for (int i = 0; i < 3; ++i) {
172  double driftVelocity =
173  detProp.DriftVelocity(detProp.Efield(i),
174  detProp.Temperature()) *
175  1.e-3; // Drift velocity as returned by the DetectorProperties service assumed to be in cm/us. Multiply by 1.e-3 to convert into LArSoft standard velocity units, cm/ns;
176 
177  fRecipDriftVel[i] = 1. / driftVelocity;
178  }
179  MF_LOG_DEBUG("DriftElectronstoPlane")
180  << " e lifetime (ns): " << fElectronLifetime
181  << "\n Temperature (K): " << detProp.Temperature()
182  << "\n Drift velocity (cm/ns): " << 1. / fRecipDriftVel[0] << " " << 1. / fRecipDriftVel[1]
183  << " " << 1. / fRecipDriftVel[2];
184 
185  // Opposite of lifetime. Convert from us to standard LArSoft time units, ns;
187  fLDiff_const = std::sqrt(2. * fLongitudinalDiffusion);
188  fTDiff_const = std::sqrt(2. * fTransverseDiffusion);
189 
190  // For this detector's geometry, save the number of cryostats and
191  // the number of TPCs within each cryostat.
193  fNTPCs.resize(fNCryostats);
194  for (size_t n = 0; n < fNCryostats; ++n)
195  fNTPCs[n] = fGeometry->NTPC(n);
196  }
art::ServiceHandle< geo::Geometry const > fGeometry
Handle to the Geometry service.
unsigned int Ncryostats() const
Returns the number of cryostats in the detector.
const double e
std::void_t< T > n
unsigned int NTPC(unsigned int cstat=0) const
Returns the total number of TPCs in the specified cryostat.
#define MF_LOG_DEBUG(id)
void detsim::DriftElectronstoPlane::produce ( art::Event evt)
overridevirtual
Todo:
think about effects of drift between planes.
Todo:
think about effects of drift between planes

Implements art::EDProducer.

Definition at line 200 of file DriftElectronstoPlane_module.cc.

201  {
202  // Fetch the SimEnergyDeposit objects for this event.
203  typedef art::Handle<std::vector<sim::SimEnergyDeposit>> energyDepositHandle_t;
204  energyDepositHandle_t energyDepositHandle;
205  // If there aren't any energy deposits for this event, don't
206  // panic. It's possible someone is doing a study with events
207  // outside the TPC, or where there are only non-ionizing
208  // particles, or something like that.
209  if (!event.getByLabel(fSimModuleLabel, energyDepositHandle)) return;
210  // Container for the SimDriftedElectronCluster objects
211  std::unique_ptr<std::vector<sim::SimDriftedElectronCluster>>
212  SimDriftedElectronClusterCollection(new std::vector<sim::SimDriftedElectronCluster>);
213 
214  // We're going through the input vector by index, rather than by
215  // iterator, because we need the index number to compute the
216  // associations near the end of this method.
217  auto const& energyDeposits = *energyDepositHandle;
218  auto energyDepositsSize = energyDeposits.size();
219 
220  auto const detProp =
222  // For each energy deposit in this event
223  for (size_t edIndex = 0; edIndex < energyDepositsSize; ++edIndex) {
224  auto const& energyDeposit = energyDeposits[edIndex];
225 
226  // "xyz" is the position of the energy deposit in world
227  // coordinates. Note that the units of distance in
228  // sim::SimEnergyDeposit are supposed to be cm.
229  auto const mp = energyDeposit.MidPoint();
230  double const xyz[3] = {mp.X(), mp.Y(), mp.Z()};
231 
232  // From the position in world coordinates, determine the
233  // cryostat and tpc. If somehow the step is outside a tpc
234  // (e.g., cosmic rays in rock) just move on to the next one.
235  unsigned int cryostat = 0;
236  unsigned int tpc = 0;
237  const geo::TPCGeo& tpcGeo = fGeometry->TPC(tpc, cryostat);
238 
239  // The drift direction can be either in the positive
240  // or negative direction in any coordinate x, y or z.
241  // Charge drift in ...
242  // +x: tpcGeo.DetectDriftDirection()==1
243  // -x: tpcGeo.DetectDriftDirection()==-1
244  // +y: tpcGeo.DetectDriftDirection()==2
245  // -y tpcGeo.DetectDriftDirection()==-2
246  // +z: tpcGeo.DetectDriftDirection()==3
247  // -z: tpcGeo.DetectDriftDirection()==-3
248 
249  //Define charge drift direction: driftcoordinate (x, y or z) and driftsign (positive or negative). Also define coordinates perpendicular to drift direction.
250  int driftcoordinate = std::abs(tpcGeo.DetectDriftDirection()) - 1; //x:0, y:1, z:2
251 
252  int transversecoordinate1 = 0;
253  int transversecoordinate2 = 0;
254  if (driftcoordinate == 0) {
255  transversecoordinate1 = 1;
256  transversecoordinate2 = 2;
257  }
258  else if (driftcoordinate == 1) {
259  transversecoordinate1 = 0;
260  transversecoordinate2 = 2;
261  }
262  else if (driftcoordinate == 2) {
263  transversecoordinate1 = 0;
264  transversecoordinate2 = 1;
265  }
266 
267  if (transversecoordinate1 == transversecoordinate2)
268  continue; //this is the case when driftcoordinate != 0, 1 or 2
269 
270  int driftsign = 0; //1: +x, +y or +z, -1: -x, -y or -z
271  if (tpcGeo.DetectDriftDirection() > 0)
272  driftsign = 1;
273  else
274  driftsign = -1;
275 
276  //Check for charge deposits behind charge readout planes
277  if (driftsign == 1 && tpcGeo.PlaneLocation(0)[driftcoordinate] < xyz[driftcoordinate])
278  continue;
279  if (driftsign == -1 && tpcGeo.PlaneLocation(0)[driftcoordinate] > xyz[driftcoordinate])
280  continue;
281 
282  /// \todo think about effects of drift between planes.
283  // Center of plane is also returned in cm units
284  double DriftDistance =
285  std::abs(xyz[driftcoordinate] - tpcGeo.PlaneLocation(0)[driftcoordinate]);
286 
287  // Space-charge effect (SCE): Get SCE {x,y,z} offsets for
288  // particular location in TPC
289  geo::Vector_t posOffsets{0.0, 0.0, 0.0};
290  double posOffsetxyz[3] = {
291  0.0, 0.0, 0.0}; //need this array for the driftcoordinate and transversecoordinates
292  auto const* SCE = lar::providerFrom<spacecharge::SpaceChargeService>();
293  if (SCE->EnableSimSpatialSCE() == true) {
294  posOffsets = SCE->GetPosOffsets(mp);
295  if (larsim::Utils::SCE::out_of_bounds(posOffsets)) continue;
296  posOffsetxyz[0] = posOffsets.X();
297  posOffsetxyz[1] = posOffsets.Y();
298  posOffsetxyz[2] = posOffsets.Z();
299  }
300 
301  double avegagetransversePos1 = 0.;
302  double avegagetransversePos2 = 0.;
303 
304  DriftDistance += -1. * posOffsetxyz[driftcoordinate];
305  avegagetransversePos1 = xyz[transversecoordinate1] + posOffsetxyz[transversecoordinate1];
306  avegagetransversePos2 = xyz[transversecoordinate2] + posOffsetxyz[transversecoordinate2];
307 
308  // Space charge distortion could push the energy deposit beyond the wire
309  // plane (see issue #15131). Given that we don't have any subtlety in the
310  // simulation of this region, bringing the deposit exactly on the plane
311  // should be enough for the time being.
312  if (DriftDistance < 0.) DriftDistance = 0.;
313 
314  // Drift time in ns
315  double TDrift = DriftDistance * fRecipDriftVel[0];
316 
317  if (
318  tpcGeo.Nplanes() == 2 &&
319  driftcoordinate ==
320  0) { // special case for ArgoNeuT (Nplanes = 2 and drift direction = x): plane 0 is the second wire plane
321  TDrift = ((DriftDistance - tpcGeo.PlanePitch(0, 1)) * fRecipDriftVel[0] +
322  tpcGeo.PlanePitch(0, 1) * fRecipDriftVel[1]);
323  }
324  const int nIonizedElectrons =
326 
327  const double lifetimecorrection = TMath::Exp(TDrift / fLifetimeCorr_const);
328  const double energy = energyDeposit.Energy();
329 
330  // if we have no electrons (too small energy or too large recombination)
331  // we are done already here
332  if (nIonizedElectrons <= 0) {
333  MF_LOG_DEBUG("DriftElectronstoPlane")
334  << "step " // << energyDeposit << "\n"
335  << "No electrons drifted to readout, " << energy << " MeV lost.";
336  continue;
337  }
338 
339  // includes the effect of lifetime: lifetimecorrection = exp[-tdrift/tau]
340  const double nElectrons = nIonizedElectrons * lifetimecorrection;
341 
342  // Longitudinal & transverse diffusion sigma (cm)
343  double SqrtT = std::sqrt(TDrift);
344  double LDiffSig = SqrtT * fLDiff_const;
345  double TDiffSig = SqrtT * fTDiff_const;
346  double electronclsize = fElectronClusterSize;
347 
348  // Number of electron clusters.
349  int nClus = (int)std::ceil(nElectrons / electronclsize);
350  if (nClus < fMinNumberOfElCluster) {
351  electronclsize = nElectrons / fMinNumberOfElCluster;
352  if (electronclsize < 1.0) { electronclsize = 1.0; }
353  nClus = (int)std::ceil(nElectrons / electronclsize);
354  }
355 
356  // Empty and resize the electron-cluster vectors.
357  fLongDiff.clear();
358  fTransDiff1.clear();
359  fTransDiff2.clear();
360  fnElDiff.clear();
361  fnEnDiff.clear();
362  fLongDiff.resize(nClus);
363  fTransDiff1.resize(nClus);
364  fTransDiff2.resize(nClus);
365  fnElDiff.resize(nClus, electronclsize);
366  fnEnDiff.resize(nClus);
367 
368  // fix the number of electrons in the last cluster, that has a smaller size
369  fnElDiff.back() = nElectrons - (nClus - 1) * electronclsize;
370 
371  for (size_t xx = 0; xx < fnElDiff.size(); ++xx) {
372  if (nElectrons > 0)
373  fnEnDiff[xx] = energy / nElectrons * fnElDiff[xx];
374  else
375  fnEnDiff[xx] = 0.;
376  }
377 
378  // Smear drift times by longitudinal diffusion
379  if (LDiffSig > 0.0)
380  fRandGauss.fireArray(nClus, &fLongDiff[0], 0., LDiffSig);
381  else
382  fLongDiff.assign(nClus, 0.0);
383 
384  if (TDiffSig > 0.0) {
385  // Smear the coordinates in plane perpendicular to drift direction by the transverse diffusion
386  fRandGauss.fireArray(nClus, &fTransDiff1[0], avegagetransversePos1, TDiffSig);
387  fRandGauss.fireArray(nClus, &fTransDiff2[0], avegagetransversePos2, TDiffSig);
388  }
389  else {
390  fTransDiff1.assign(nClus, avegagetransversePos1);
391  fTransDiff2.assign(nClus, avegagetransversePos2);
392  }
393 
394  // make a collection of electrons for each plane
395  for (size_t p = 0; p < tpcGeo.Nplanes(); ++p) {
396 
397  fDriftClusterPos[driftcoordinate] = tpcGeo.PlaneLocation(p)[driftcoordinate];
398 
399  // Drift nClus electron clusters to the induction plane
400  for (int k = 0; k < nClus; ++k) {
401 
402  // Correct drift time for longitudinal diffusion and plane
403  double TDiff = TDrift + fLongDiff[k] * fRecipDriftVel[0];
404 
405  // Take into account different Efields between planes
406  // Also take into account special case for ArgoNeuT (Nplanes = 2 and drift direction = x): plane 0 is the second wire plane
407  for (size_t ip = 0; ip < p; ++ip) {
408  TDiff +=
409  (tpcGeo.PlaneLocation(ip + 1)[driftcoordinate] -
410  tpcGeo.PlaneLocation(ip)[driftcoordinate]) *
411  fRecipDriftVel[(tpcGeo.Nplanes() == 2 && driftcoordinate == 0) ? ip + 2 : ip + 1];
412  }
413 
414  fDriftClusterPos[transversecoordinate1] = fTransDiff1[k];
415  fDriftClusterPos[transversecoordinate2] = fTransDiff2[k];
416  auto const simTime = energyDeposit.Time();
417  /// \todo think about effects of drift between planes
418  SimDriftedElectronClusterCollection->emplace_back(
419  fnElDiff[k],
420  TDiff + simTime, // timing
421  geo::Point_t{mp.X(), mp.Y(), mp.Z()}, // mean position of the deposited energy
423  fDriftClusterPos[1],
424  fDriftClusterPos[2]}, // final position of the drifted cluster
425  geo::Point_t{
426  LDiffSig, TDiffSig, TDiffSig}, // Longitudinal (X) and transverse (Y,Z) diffusion
427  fnEnDiff[k], //deposited energy that originated this cluster
428  energyDeposit.TrackID());
429 
430  } // end loop over clusters
431  } // end loop over planes
432  } // for each sim::SimEnergyDeposit
433 
434  if (fStoreDriftedElectronClusters) event.put(std::move(SimDriftedElectronClusterCollection));
435  }
double PlanePitch(unsigned int p1=0, unsigned int p2=1) const
Definition: TPCGeo.cxx:388
bool out_of_bounds(geo::Vector_t const &offset)
unsigned int Nplanes() const
Number of planes in this tpc.
Definition: TPCGeo.h:165
art::ServiceHandle< geo::Geometry const > fGeometry
Handle to the Geometry service.
Geometry information for a single TPC.
Definition: TPCGeo.h:38
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double >, ROOT::Math::GlobalCoordinateSystemTag > Vector_t
Type for representation of momenta in 3D space.
Definition: geo_vectors.h:164
T abs(T value)
def move(depos, offset)
Definition: depos.py:107
p
Definition: test.py:223
Data CalculateIonizationAndScintillation(detinfo::DetectorPropertiesData const &detProp, sim::SimEnergyDeposit const &edep) const
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< double >, ROOT::Math::GlobalCoordinateSystemTag > Point_t
Type for representation of position in physical 3D space.
Definition: geo_vectors.h:184
short int DetectDriftDirection() const
Returns the expected drift direction based on geometry.
Definition: TPCGeo.cxx:157
#define MF_LOG_DEBUG(id)
TPCGeo const & TPC(unsigned int const tpc=0, unsigned int const cstat=0) const
Returns the specified TPC.
const double * PlaneLocation(unsigned int p) const
Definition: TPCGeo.cxx:382
Event finding and building.

Member Data Documentation

double detsim::DriftElectronstoPlane::fDriftClusterPos[3]
private

Definition at line 127 of file DriftElectronstoPlane_module.cc.

double detsim::DriftElectronstoPlane::fElectronClusterSize
private

Definition at line 100 of file DriftElectronstoPlane_module.cc.

double detsim::DriftElectronstoPlane::fElectronLifetime
private

Definition at line 109 of file DriftElectronstoPlane_module.cc.

art::ServiceHandle<geo::Geometry const> detsim::DriftElectronstoPlane::fGeometry
private

Handle to the Geometry service.

Definition at line 129 of file DriftElectronstoPlane_module.cc.

double detsim::DriftElectronstoPlane::fGeVToElectrons
private

Definition at line 102 of file DriftElectronstoPlane_module.cc.

ISCalculationSeparate detsim::DriftElectronstoPlane::fISAlg
private

Definition at line 132 of file DriftElectronstoPlane_module.cc.

double detsim::DriftElectronstoPlane::fLDiff_const
private

Definition at line 111 of file DriftElectronstoPlane_module.cc.

double detsim::DriftElectronstoPlane::fLifetimeCorr_const
private

Definition at line 110 of file DriftElectronstoPlane_module.cc.

std::vector<double> detsim::DriftElectronstoPlane::fLongDiff
private

Definition at line 121 of file DriftElectronstoPlane_module.cc.

double detsim::DriftElectronstoPlane::fLongitudinalDiffusion
private

Definition at line 98 of file DriftElectronstoPlane_module.cc.

int detsim::DriftElectronstoPlane::fMinNumberOfElCluster
private

Definition at line 101 of file DriftElectronstoPlane_module.cc.

double detsim::DriftElectronstoPlane::fModBoxA
private

Definition at line 105 of file DriftElectronstoPlane_module.cc.

double detsim::DriftElectronstoPlane::fModBoxB
private

Definition at line 106 of file DriftElectronstoPlane_module.cc.

size_t detsim::DriftElectronstoPlane::fNCryostats
private

Definition at line 117 of file DriftElectronstoPlane_module.cc.

std::vector<double> detsim::DriftElectronstoPlane::fnElDiff
private

Definition at line 124 of file DriftElectronstoPlane_module.cc.

std::vector<double> detsim::DriftElectronstoPlane::fnEnDiff
private

Definition at line 125 of file DriftElectronstoPlane_module.cc.

std::vector<size_t> detsim::DriftElectronstoPlane::fNTPCs
private

Definition at line 118 of file DriftElectronstoPlane_module.cc.

CLHEP::RandGauss detsim::DriftElectronstoPlane::fRandGauss
private

Definition at line 95 of file DriftElectronstoPlane_module.cc.

double detsim::DriftElectronstoPlane::fRecipDriftVel[3]
private

Definition at line 113 of file DriftElectronstoPlane_module.cc.

double detsim::DriftElectronstoPlane::fRecombA
private

Definition at line 103 of file DriftElectronstoPlane_module.cc.

double detsim::DriftElectronstoPlane::fRecombk
private

Definition at line 104 of file DriftElectronstoPlane_module.cc.

art::InputTag detsim::DriftElectronstoPlane::fSimModuleLabel
private

Definition at line 93 of file DriftElectronstoPlane_module.cc.

bool detsim::DriftElectronstoPlane::fStoreDriftedElectronClusters
private

Definition at line 97 of file DriftElectronstoPlane_module.cc.

double detsim::DriftElectronstoPlane::fTDiff_const
private

Definition at line 112 of file DriftElectronstoPlane_module.cc.

std::vector<double> detsim::DriftElectronstoPlane::fTransDiff1
private

Definition at line 122 of file DriftElectronstoPlane_module.cc.

std::vector<double> detsim::DriftElectronstoPlane::fTransDiff2
private

Definition at line 123 of file DriftElectronstoPlane_module.cc.

double detsim::DriftElectronstoPlane::fTransverseDiffusion
private

Definition at line 99 of file DriftElectronstoPlane_module.cc.

bool detsim::DriftElectronstoPlane::fUseModBoxRecomb
private

Definition at line 107 of file DriftElectronstoPlane_module.cc.


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