ATTPCROOT  0.3.0-alpha
A ROOT-based framework for analyzing data from active target detectors
AtPulseGADGET.h
Go to the documentation of this file.
1 /*****************************************************************/
2 /* AtPulseTask: Simulates the ionized electrons which are */
3 /* drifted and amplified by avalanche when reaching the mesh. */
4 /* Log: Created in 24-10-2016 */
5 /* Author: Nathan Watwood (NSCL) */
6 /* ayyadlim@nscl.msu.edu */
7 /*****************************************************************/
8 #ifndef AtPULSETASKGADGET_H
9 #define AtPULSETASKGADGET_H
10 
11 #include "AtPulse.h"
12 #include "AtRawEvent.h" // for AtRawEvent
13 
14 #include <Rtypes.h>
15 
16 #include <memory> // for make_shared, shared_ptr
17 #include <vector>
18 
19 class AtSimulatedPoint;
20 
21 class AtPulseGADGET : public AtPulse {
22 
23 private:
24  Int_t AdjecentPads = 1; // Number of adjecent pads to be considered
25  Int_t Items = 2 * AdjecentPads + 1;
26  Double_t R = 10.0e6; // Resistance (ohms)
27  Double_t C = 2.8e-7; // Capacitance[C] (Farad)
28  Double_t t_amp = 1.32e-3; // time amplitude (microseconds)
29  Double_t Dc = 0.8673; // Diffusion coefficent (millimeter^2/microseconds)
30  Double_t W = 2.2; // widith (millimeter)
31  Float_t SigmaPercent = 1.0; // Sigma percent for charge dispersion
32 
33  int fSkippy = 0; // keeps track Number of skipped charge disprsion points that have hit our veto pads
34 
35 protected:
36  Double_t ChargeDispersion(Double_t G, Double_t time, Double_t x0, Double_t y0, Double_t xi, Double_t yi);
37  virtual bool AssignElectronsToPad(AtSimulatedPoint *point) override;
38 
39 public:
41 
42  ~AtPulseGADGET() = default;
43  void SetSigmaPercent(Float_t sigma) { SigmaPercent = sigma; }
44  void SetAdjecentPads(Int_t pads) { AdjecentPads = pads; };
45 
46  virtual AtRawEvent GenerateEvent(std::vector<AtSimulatedPoint *> &vec) override;
47  virtual std::shared_ptr<AtPulse> Clone() const override { return std::make_shared<AtPulseGADGET>(*this); }
48 };
49 
50 #endif //#ifndef AtPULSETASKGADGET_H
AtRawEvent.h
AtPulseGADGET
Definition: AtPulseGADGET.h:21
AtPulseGADGET::Clone
virtual std::shared_ptr< AtPulse > Clone() const override
Definition: AtPulseGADGET.h:47
AtPulseGADGET::GenerateEvent
virtual AtRawEvent GenerateEvent(std::vector< AtSimulatedPoint * > &vec) override
Executed for each event.
Definition: AtPulseGADGET.cxx:103
AtRawEvent
Definition: AtRawEvent.h:34
AtPulseGADGET::AtPulseGADGET
AtPulseGADGET(AtMapPtr map)
Definition: AtPulseGADGET.cxx:27
AtSimulatedPoint
Definition: AtSimulatedPoint.h:16
AtPulse::AtMapPtr
std::shared_ptr< AtMap > AtMapPtr
Definition: AtPulse.h:24
AtPulseGADGET::~AtPulseGADGET
~AtPulseGADGET()=default
AtPulseGADGET::SetSigmaPercent
void SetSigmaPercent(Float_t sigma)
Definition: AtPulseGADGET.h:43
AtPulseGADGET::SetAdjecentPads
void SetAdjecentPads(Int_t pads)
Definition: AtPulseGADGET.h:44
AtPulseGADGET::ChargeDispersion
Double_t ChargeDispersion(Double_t G, Double_t time, Double_t x0, Double_t y0, Double_t xi, Double_t yi)
Definition: AtPulseGADGET.cxx:29
AtPulse
Definition: AtPulse.h:22
AtPulseGADGET::AssignElectronsToPad
virtual bool AssignElectronsToPad(AtSimulatedPoint *point) override
Definition: AtPulseGADGET.cxx:39
AtPulse.h