ATTPCROOT  0.3.0-alpha
A ROOT-based framework for analyzing data from active target detectors
AtSpaceChargeTask.cxx
Go to the documentation of this file.
1 #include "AtSpaceChargeTask.h"
2 
3 #include "AtDigiPar.h"
4 #include "AtMCPoint.h"
5 
6 #include <FairLogger.h>
7 #include <FairRunAna.h>
8 #include <FairRuntimeDb.h>
9 
10 #include <TClonesArray.h>
11 
12 AtSpaceChargeTask::AtSpaceChargeTask() : FairTask("AtSpaceChargeTask") {}
13 
14 AtSpaceChargeTask::AtSpaceChargeTask(const char *name) : FairTask(name) {}
15 
17 
19 {
20  FairRootManager *ioman = FairRootManager::Instance();
21 
22  fMCPointArray = dynamic_cast<TClonesArray *>(ioman->GetObject(fInputBranchName));
23  if (fMCPointArray == nullptr) {
24  LOG(fatal) << "Cannot find fMCPointArray array!";
25  return kERROR;
26  }
27 
28  fSpaceChargePointArray = new TClonesArray(fOutputBranchName);
29  ioman->Register("AtSimulatedPoint", "cbmsim", fSpaceChargePointArray, fIsPersistent);
30 
31  getParameters();
32 
33  return kSUCCESS;
34 }
35 
37 {
38  LOG(debug) << "SetParContainers of AtClusterizeTask";
39 
40  FairRunAna *ana = FairRunAna::Instance();
41  FairRuntimeDb *rtdb = ana->GetRuntimeDb();
42  fPar = dynamic_cast<AtDigiPar *>(rtdb->getContainer("AtDigiPar"));
43  if (fPar == nullptr)
44  LOG(fatal) << "Could not get the parameter container "
45  << "AtDigiPar";
46 }
47 
49 {
50  fVelDrift = fPar->GetDriftVelocity(); // [cm/us]
51  fDetPadPlane = fPar->GetZPadPlane(); //[mm]
52 
53  std::cout << " Drift velocity: " << fVelDrift << std::endl;
54  std::cout << " Position of the pad plane (Z): " << fDetPadPlane << std::endl;
55 }
56 
57 void AtSpaceChargeTask::Exec(Option_t *opt)
58 {
59  fSpaceChargePointArray->Clear();
60 
61  for (int i = 0; i < fMCPointArray->GetEntries(); ++i) {
62  auto mcPoint = dynamic_cast<AtMCPoint *>(fMCPointArray->At(i));
63  if (mcPoint->GetVolName() == "drift_volume")
64  processPoint(mcPoint);
65  else
66  LOG(info) << "Skipping point " << i << ". Not in drift volume.";
67  }
68 }
69 
71 {
72  // Create a copy of the point
73 }
AtSpaceChargeTask::fSpaceChargePointArray
TClonesArray * fSpaceChargePointArray
space charge corrected MC Points (output)
Definition: AtSpaceChargeTask.h:33
AtDigiPar::GetZPadPlane
Double_t GetZPadPlane() const
Definition: AtDigiPar.h:50
AtSpaceChargeTask::SetParContainers
virtual void SetParContainers() override
Load the parameter container from the runtime database.
Definition: AtSpaceChargeTask.cxx:36
AtSpaceChargeTask::fPar
AtDigiPar * fPar
Base parameter container.
Definition: AtSpaceChargeTask.h:30
AtSpaceChargeTask::Exec
virtual void Exec(Option_t *opt) override
Executed for each event.
Definition: AtSpaceChargeTask.cxx:57
AtSpaceChargeTask::fOutputBranchName
TString fOutputBranchName
Definition: AtSpaceChargeTask.h:37
AtSpaceChargeTask::fMCPointArray
TClonesArray * fMCPointArray
All AtMCpoints (input)
Definition: AtSpaceChargeTask.h:32
AtSpaceChargeTask::fVelDrift
Double_t fVelDrift
Drift velocity of electron in gas. [mm/ns].
Definition: AtSpaceChargeTask.h:27
AtDigiPar.h
AtDigiPar
Definition: AtDigiPar.h:14
AtSpaceChargeTask::fInputBranchName
TString fInputBranchName
Definition: AtSpaceChargeTask.h:36
AtSpaceChargeTask::fDetPadPlane
Double_t fDetPadPlane
Position of the pad plane with respect to the entrance [mm].
Definition: AtSpaceChargeTask.h:28
AtMCPoint.h
AtSpaceChargeTask::getParameters
void getParameters()
Definition: AtSpaceChargeTask.cxx:48
AtSpaceChargeTask::fIsPersistent
Bool_t fIsPersistent
If true, save container.
Definition: AtSpaceChargeTask.h:34
AtSpaceChargeTask::~AtSpaceChargeTask
~AtSpaceChargeTask()
Definition: AtSpaceChargeTask.cxx:16
AtSpaceChargeTask.h
AtDigiPar::GetDriftVelocity
Double_t GetDriftVelocity() const
Definition: AtDigiPar.h:58
AtMCPoint
Definition: AtMCPoint.h:26
AtSpaceChargeTask::AtSpaceChargeTask
AtSpaceChargeTask()
Definition: AtSpaceChargeTask.cxx:12
AtSpaceChargeTask::processPoint
void processPoint(AtMCPoint *point)
Definition: AtSpaceChargeTask.cxx:70
AtSpaceChargeTask::Init
virtual InitStatus Init() override
Initiliazation of task at the beginning of a run.
Definition: AtSpaceChargeTask.cxx:18