ATTPCROOT  0.3.0-alpha
A ROOT-based framework for analyzing data from active target detectors
AtPulseTask.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 AtPulseTask_H
9 #define AtPulseTask_H
10 
11 #include <FairTask.h>
12 
13 #include <Rtypes.h>
14 #include <TClonesArray.h>
15 
16 #include <cstddef>
17 #include <functional> // for function
18 #include <map>
19 #include <memory>
20 #include <type_traits> // for add_pointer_t
21 
22 class AtMap;
23 class AtSimulatedPoint;
24 class AtDigiPar;
25 class AtPulse;
26 class TBuffer;
27 class TClass;
28 class TMemberInspector;
29 
30 class AtPulseTask : public FairTask {
31 
32 protected:
33  using AtMapPtr = std::shared_ptr<AtMap>;
34  using ResponseFunctionType = std::add_pointer_t<double(double)>;
36  using ResponseFunc = std::function<double(int, double)>;
37 
38  Int_t fEventID{0};
39  Bool_t fIsPersistent{true};
40  Bool_t fIsPersistentAtTpcPoint{false};
41  Bool_t fSaveMCInfo{false};
42 
43  TClonesArray *fSimulatedPointArray{nullptr};
44  TClonesArray *fMCPointArray{nullptr};
45  TClonesArray fRawEventArray;
46 
47  std::multimap<Int_t, std::size_t> MCPointsMap;
48 
49  std::shared_ptr<AtPulse> fPulse;
50  AtDigiPar *fPar{nullptr};
51 
52 public:
53  AtPulseTask(std::shared_ptr<AtPulse> pulse);
54  ~AtPulseTask() = default;
55 
56  void SetPersistence(Bool_t val) { fIsPersistent = val; }
58  void SetSaveMCInfo() { fSaveMCInfo = true; }
59 
60  virtual InitStatus Init() override;
61  virtual void Exec(Option_t *opt) override;
62  virtual void SetParContainers() override;
63 
64 protected:
65  void FillPointsMap(AtSimulatedPoint *point);
66  void saveMCInfo(int mcPointID, int padNumber, int trackID);
67  void reset();
68 
70 };
71 
72 #endif
AtMap
Definition: AtMap.h:33
AtPulseTask::MCPointsMap
std::multimap< Int_t, std::size_t > MCPointsMap
[padNum] = mcPointID
Definition: AtPulseTask.h:47
AtPulseTask::SetPersistenceAtTpcPoint
void SetPersistenceAtTpcPoint(Bool_t val)
Definition: AtPulseTask.h:57
AtPulseTask::~AtPulseTask
~AtPulseTask()=default
AtPulseTask::SetPersistence
void SetPersistence(Bool_t val)
Definition: AtPulseTask.h:56
AtPulseTask::fPar
AtDigiPar * fPar
Definition: AtPulseTask.h:50
AtPulseTask::fPulse
std::shared_ptr< AtPulse > fPulse
Definition: AtPulseTask.h:49
AtPulseTask::saveMCInfo
void saveMCInfo(int mcPointID, int padNumber, int trackID)
Definition: AtPulseTask.cxx:122
AtPulseTask::AtMapPtr
std::shared_ptr< AtMap > AtMapPtr
Definition: AtPulseTask.h:33
AtPulseTask::fIsPersistentAtTpcPoint
Bool_t fIsPersistentAtTpcPoint
If true, save container.
Definition: AtPulseTask.h:40
AtPulseTask::fRawEventArray
TClonesArray fRawEventArray
Raw Event array (only one)
Definition: AtPulseTask.h:45
AtSimulatedPoint
Definition: AtSimulatedPoint.h:16
AtPulseTask::fSaveMCInfo
Bool_t fSaveMCInfo
< Propagates MC information (adds AtTpcPoint branch to output
Definition: AtPulseTask.h:41
AtPulseTask::fIsPersistent
Bool_t fIsPersistent
EventID.
Definition: AtPulseTask.h:39
AtPulseTask::Init
virtual InitStatus Init() override
Initiliazation of task at the beginning of a run.
Definition: AtPulseTask.cxx:53
AtDigiPar
Definition: AtDigiPar.h:14
AtPulseTask::AtPulseTask
AtPulseTask(std::shared_ptr< AtPulse > pulse)
Definition: AtPulseTask.cxx:38
AtPulseTask::fMCPointArray
TClonesArray * fMCPointArray
MC Point Array (input)
Definition: AtPulseTask.h:44
AtPulseTask::ResponseFunc
std::function< double(int, double)> ResponseFunc
Function (or callable object) to use as the response function. Parameters are padNum and time (us)
Definition: AtPulseTask.h:36
AtPulseTask::SetParContainers
virtual void SetParContainers() override
Load the parameter container from the runtime database.
Definition: AtPulseTask.cxx:43
AtPulseTask::SetSaveMCInfo
void SetSaveMCInfo()
Definition: AtPulseTask.h:58
AtPulseTask::FillPointsMap
void FillPointsMap(AtSimulatedPoint *point)
Definition: AtPulseTask.cxx:114
AtPulseTask::ClassDefOverride
ClassDefOverride(AtPulseTask, 5)
AtPulseTask::fEventID
Int_t fEventID
Definition: AtPulseTask.h:38
AtPulseTask::fSimulatedPointArray
TClonesArray * fSimulatedPointArray
drifted electron array (input)
Definition: AtPulseTask.h:43
AtPulseTask::Exec
virtual void Exec(Option_t *opt) override
Executed for each event.
Definition: AtPulseTask.cxx:83
AtPulseTask::ResponseFunctionType
std::add_pointer_t< double(double)> ResponseFunctionType
Definition: AtPulseTask.h:34
AtPulseTask
Definition: AtPulseTask.h:30
AtPulse
Definition: AtPulse.h:22
AtPulseTask::reset
void reset()
Definition: AtPulseTask.cxx:142