PandaRoot
TestTasks.h
Go to the documentation of this file.
1 #include "FairTask.h"
2 #include "FairTimeStamp.h"
3 
4 #include "PndConstContainer.h"
5 #include "PndMutableContainer.h"
6 // #include "PndPersistencyTask.h" // for PndPersistencyTask
9 
10 #include "gtest/gtest.h" // for AssertHelper, EXPECT_EQ, EXPECT_TRUE
11 
12 //______________________________________________________________________________
13 class TestInTask : public FairTask {
15  Int_t fgNumber{111};
16  TString fBranchName;
17 
18  public:
19  TestInTask(const TString &t_branch = "TestBranch") : FairTask(), fBranchName(t_branch){};
20  virtual ~TestInTask(){};
21 
28  PndTCAConstContainer<FairTimeStamp> *GetTCA(const TString &t_branchname)
29  {
30  PndTCAConstContainer<FairTimeStamp> *container{nullptr};
31 
32  if (FairRootManager::Instance()->CheckBranch(t_branchname) ==
33  0) { // This test is required here, as you get a segmentation violation if you try to access a not existing branch t_branchname via std
34  return container;
35  }
36  container = new PndTCAConstContainer<FairTimeStamp>{};
37  container->SetBranchName(t_branchname);
38  container->SetTCA(dynamic_cast<TClonesArray *>(FairRootManager::Instance()->GetObject(t_branchname)));
39  return container;
40  }
41 
48  PndSTDConstContainer<FairTimeStamp> *GetSTD(const TString &t_branchname)
49  {
50  PndSTDConstContainer<FairTimeStamp> *container{nullptr};
51  if (FairRootManager::Instance()->CheckBranch(t_branchname) ==
52  0) { // This test is required here, as you get a segmentation violation if you try to access a not existing branch t_branchname via std
53  return container;
54  }
55  std::vector<FairTimeStamp> const *data = FairRootManager::Instance()->InitObjectAs<std::vector<FairTimeStamp> const *>(t_branchname);
56  if (data != nullptr) {
57  container = new PndSTDConstContainer<FairTimeStamp>{};
58  container->SetBranchName(t_branchname);
59  container->SetData(data);
60  }
61 
62  return container;
63  }
64 
65  virtual InitStatus Init() /*override*/ final
66  {
67  fInCont.SetBranchName(fBranchName);
68  PndConstContainerI<FairTimeStamp> *container = GetTCA(fBranchName);
69  if (container != nullptr) {
70  fInCont.SetConstContainer(container);
71  return kSUCCESS;
72  }
73  container = GetSTD(fBranchName);
74  if (container != nullptr) {
75  fInCont.SetConstContainer(container);
76  return kSUCCESS;
77  }
78  return kFATAL;
79  };
80 
81  virtual void Exec(Option_t * /*option*/) /*override*/
82  {
83  ASSERT_EQ(fInCont.GetSize(), 1);
84  EXPECT_EQ(fInCont.GetConstElementPtr(0)->GetTimeStamp(), fgNumber--);
85  };
86 
87  private:
88  // ClassDef(TestInTask, 1);
89 };
90 
91 //______________________________________________________________________________
92 class TestOutTask : public FairTask {
94  Int_t fgNumber{111};
95  TString fBranchName;
96 
97  public:
98  TestOutTask(const TString &t_branch = "TestBranch") : FairTask(), fBranchName(t_branch) {}
99  virtual ~TestOutTask() {}
100 
101  virtual InitStatus Init() /*override*/ final
102  {
103  fOutCont.SetBranchName(fBranchName);
104  fOutCont.SetTCA(dynamic_cast<TClonesArray *>(FairRootManager::Instance()->Register(fBranchName, "FairTimeStamp", "Test", kTRUE)));
105  return kSUCCESS;
106  }
107 
108  virtual void Exec(Option_t * /*option*/) /*override*/
109  {
110  fOutCont.Reset();
111  FairTimeStamp stamp;
112  stamp.SetTimeStamp(fgNumber--);
113  fOutCont.CreateCopy(stamp);
114  }
115  // ClassDef(TestOutTask, 1);
116 };
117 
118 //______________________________________________________________________________
119 class TestOutWithSTDTask : public FairTask {
121  Int_t fgNumber{111};
122  TString fBranchName;
123 
124  public:
125  TestOutWithSTDTask(const TString &t_branch = "TestBranch") : FairTask(), fBranchName(t_branch) {}
126  virtual ~TestOutWithSTDTask() {}
127 
128  virtual InitStatus Init() /*override*/ final
129  {
130  fOutCont.SetBranchName(fBranchName);
131  auto *data = new std::vector<FairTimeStamp>{};
132  FairRootManager::Instance()->RegisterAny(fBranchName, data, kTRUE);
133  fOutCont.SetData(data);
134 
135  return kSUCCESS;
136  }
137 
138  virtual void Exec(Option_t * /*option*/) /*override*/
139  {
140  fOutCont.Reset();
141  FairTimeStamp stamp;
142  stamp.SetTimeStamp(fgNumber--);
143  fOutCont.CreateCopy(stamp);
144  }
145  // ClassDef(TestOutWithSTDTask, 1);
146 };
147 
148 //______________________________________________________________________________
149 class TestOutWithTCATask : public FairTask {
151  Int_t fgNumber{111};
152  TString fBranchName;
153 
154  public:
155  TestOutWithTCATask(const TString &t_branch = "TestBranch") : FairTask(), fBranchName(t_branch) {}
156 
157  virtual ~TestOutWithTCATask() {}
158 
159  virtual InitStatus Init() /*override*/ final
160  {
161  fOutCont.SetBranchName(fBranchName);
162  fOutCont.SetTCA(dynamic_cast<TClonesArray *>(FairRootManager::Instance()->Register(fBranchName, "FairTimeStamp", "Test", kTRUE)));
163 
164  return kSUCCESS;
165  }
166 
167  virtual void Exec(Option_t * /*option*/) /*override*/
168  {
169  fOutCont.Reset();
170  FairTimeStamp stamp;
171  stamp.SetTimeStamp(fgNumber--);
172  fOutCont.CreateCopy(stamp);
173  }
174  // ClassDef(TestOutWithTCATask, 1);
175 };
virtual ~TestOutWithTCATask()
Definition: TestTasks.h:157
PndSTDConstContainer implementation of PndConstContainerI<T> for FairRootManager and std::vector<T> ...
virtual T * CreateCopy(const T &t_element)
Create a Copy object of t_element and return pointer to copy.
virtual void Exec(Option_t *)
Definition: TestTasks.h:108
virtual T const * GetConstElementPtr(Int_t t_index) const
Get the Element object at t_index.
virtual InitStatus Init() final
Definition: TestTasks.h:65
void SetData(std::vector< T > *t_container)
Set the Data.
virtual void Reset() final
"Delete" all elements
TestOutTask(const TString &t_branch="TestBranch")
Definition: TestTasks.h:98
PndSTDConstContainer< FairTimeStamp > * GetSTD(const TString &t_branchname)
Tries to find a registered const std::vector<T>* with name t_branchname. Returns kTRUE on success...
Definition: TestTasks.h:48
TestOutWithTCATask(const TString &t_branch="TestBranch")
Definition: TestTasks.h:155
Input and Output Container implementation of PndMutableContainerI using an underlying TClonesArray...
virtual ~TestOutTask()
Definition: TestTasks.h:99
Container to wrap PndTCA/STDMutableContainer (not needed anymore)
void SetTCA(TClonesArray *t_tca)
Set the TClonesArray address.
virtual ~TestInTask()
Definition: TestTasks.h:20
virtual void Exec(Option_t *)
Definition: TestTasks.h:138
virtual void Reset() final
Delete all elements.
TestInTask(const TString &t_branch="TestBranch")
Definition: TestTasks.h:19
void SetConstContainer(PndConstContainerI< T > *t_container)
Set the Input Container object.
TestOutWithSTDTask(const TString &t_branch="TestBranch")
Definition: TestTasks.h:125
Input and Output Container implementation of PndMutableContainerI using an underlying std::vector<T> ...
virtual void Exec(Option_t *)
Definition: TestTasks.h:167
void SetBranchName(const TString &t_branchname)
Set the Branch Name.
virtual InitStatus Init() final
Definition: TestTasks.h:101
virtual void Exec(Option_t *)
Definition: TestTasks.h:81
PndTCAConstContainer< FairTimeStamp > * GetTCA(const TString &t_branchname)
Tries to find a registered TClonesArray with name t_branchname. Returns kTRUE on success.
Definition: TestTasks.h:28
PndTCAConstContainer implementation of PndConstContainerI<T> for FairRootManager and TClonesArray...
virtual ~TestOutWithSTDTask()
Definition: TestTasks.h:126
virtual ssize_t GetSize() const final
Get the number of members in internal data.
Container to wrap PndTCA/STDConstContainer (not needed anymore)
virtual InitStatus Init() final
Definition: TestTasks.h:159
virtual T * CreateCopy(const T &t_element)
Create a copy of t_element in the TClonesArray and return a pointer to it.
virtual InitStatus Init() final
Definition: TestTasks.h:128