FairRoot/PandaRoot
Public Member Functions | Private Member Functions | Private Attributes | List of all members
PndSolCorrTask Class Reference

#include <PndSolCorrTask.h>

Inheritance diagram for PndSolCorrTask:

Public Member Functions

 PndSolCorrTask ()
 
virtual ~PndSolCorrTask ()
 
virtual InitStatus Init ()
 
virtual void Exec (Option_t *opt)
 
virtual void FinishTask ()
 
void SetOutBranchName (TString name)
 
void AddInputBranch (TString branchName)
 
void RunContinuous (Bool_t val=kTRUE)
 
void SetPersistence (Bool_t val)
 
FairTimeStamp * SolCorr (FairHit *inHit)
 

Private Member Functions

 ClassDef (PndSolCorrTask, 0)
 

Private Attributes

TString fOutBranchName
 
std::vector< TStringfInBranches
 
std::vector< TClonesArray * > fInArrays
 
TClonesArray * fOutArray
 
std::multimap< double,
FairTimeStamp * > 
fDataCorr_map
 
Bool_t fRunContinuous
 
Bool_t fPersistence
 
BinaryFunctor * fStopFunctor
 
double fReadOutStop
 

Detailed Description

Definition at line 19 of file PndSolCorrTask.h.

Constructor & Destructor Documentation

PndSolCorrTask::PndSolCorrTask ( )

Default constructor

Definition at line 16 of file PndSolCorrTask.cxx.

References fOutBranchName, fPersistence, and fRunContinuous.

16  :
17  FairTask("Pnd SolCorr")
18 {
19  fPersistence = kTRUE;
20  fRunContinuous = kTRUE;
21  fOutBranchName = "SolCorr";
22  //fInBranches
23 }
Bool_t fRunContinuous
TString fOutBranchName
PndSolCorrTask::~PndSolCorrTask ( )
virtual

Destructor

Definition at line 25 of file PndSolCorrTask.cxx.

26 {
27 }

Member Function Documentation

void PndSolCorrTask::AddInputBranch ( TString  branchName)
inline

Definition at line 41 of file PndSolCorrTask.h.

References fInBranches.

Referenced by PndT0CandidateTask::PndT0CandidateTask().

41 { fInBranches.push_back(branchName);};
std::vector< TString > fInBranches
PndSolCorrTask::ClassDef ( PndSolCorrTask  ,
 
)
private
void PndSolCorrTask::Exec ( Option_t *  opt)
virtual

Virtual method Exec

Definition at line 70 of file PndSolCorrTask.cxx.

References At, fDataCorr_map, fInArrays, fInBranches, fOutArray, fReadOutStop, fRunContinuous, fStopFunctor, GetEntriesFast(), i, and SolCorr().

71 {
72  // Declare some variables
73 
74  FairHit *inHit;
75  FairTimeStamp *outStamp;
76 
77  // Reset output array
78 
79  fOutArray->Clear();
80 
81  if(fRunContinuous==kFALSE){ // --- for Event based Simulation
82  // Loop over Input FairHits
83  for (size_t i = 0; i < fInArrays.size(); i++){
84  for (int j = 0; j < fInArrays[i]->GetEntriesFast(); j++){
85  inHit = (FairHit*) fInArrays[i]->At(j);
86  outStamp = SolCorr(inHit);
87  fDataCorr_map.insert(std::pair<double,FairTimeStamp*>(outStamp->GetTimeStamp(),outStamp));
88  }
89  }
90 
91  // --- write out all the Data for the Event ------
92  typedef std::multimap<double, FairTimeStamp*>::iterator DataIter;
93  for (DataIter it = fDataCorr_map.begin(); it != fDataCorr_map.end();it++){
94  new ((*fOutArray)[fOutArray->GetEntries()]) FairTimeStamp(*(it->second));
95  }
96  fDataCorr_map.clear();
97  }
98  else{ // for time based simulation-----------------------------------------------------------
99 
100  double time;
101 
102  for (size_t i = 0; i < fInArrays.size(); i++){
103  if (fInArrays[i]->GetEntriesFast()>0){
104  inHit = (FairHit*) fInArrays[i]->At(fInArrays[i]->GetEntriesFast()-1);
105  time = inHit->GetTimeStamp();
106  if ( fReadOutStop < time) fReadOutStop = time;
107  }
108  }
109 
110 
111  for (size_t i = 0; i < fInBranches.size(); i++){
112 
113  TClonesArray* tempArray = FairRootManager::Instance()->GetData(fInBranches[i],fStopFunctor,fReadOutStop);
114 
115  for (int j = 0; j < tempArray->GetEntriesFast(); j++){
116  inHit = (FairHit*) tempArray->At(j);
117  outStamp = SolCorr(inHit);
118  fDataCorr_map.insert(std::pair<double,FairTimeStamp*>(outStamp->GetTimeStamp(),outStamp));
119  }
120  tempArray->Clear();
121  }
122 
123  // --- write out the Data which can't be affected anymore (1000 ns safty margin) ------
124 
125  typedef std::multimap<double, FairTimeStamp*>::iterator DataIter;
126  for (DataIter it = fDataCorr_map.begin(); it != fDataCorr_map.lower_bound(fReadOutStop - 1000);it++){
127  new ((*fOutArray)[fOutArray->GetEntries()]) FairTimeStamp(*(it->second));
128  }
129  fDataCorr_map.erase(fDataCorr_map.begin(),fDataCorr_map.lower_bound(fReadOutStop - 1000));
130 
131  }
132 
133 
134 }
BinaryFunctor * fStopFunctor
Int_t i
Definition: run_full.C:25
std::vector< TString > fInBranches
cout<< "POINTs for new FwEndCap == "<< tsim-> GetEntriesFast()
TClonesArray * fOutArray
std::multimap< double, FairTimeStamp * > fDataCorr_map
cout<< "blue = Monte Carlo "<< endl;cout<< "red = Helix Hit "<< endl;cout<< "green = Center Of Tubes "<< endl;for(Int_t k=0;k< track->GetEntriesFast();k++){PndSttTrack *stttrack=(PndSttTrack *) track-> At(k)
Definition: checkhelixhit.C:56
std::vector< TClonesArray * > fInArrays
FairTimeStamp * SolCorr(FairHit *inHit)
Bool_t fRunContinuous
void PndSolCorrTask::FinishTask ( )
virtual

Definition at line 136 of file PndSolCorrTask.cxx.

References fDataCorr_map, fOutArray, and fRunContinuous.

136  {
137 
138  // write out the last data in the DataCorr_map ---------
139 
140  if (IsActive()==kFALSE) return;
141 
142  if(fRunContinuous==kTRUE){
143  fOutArray->Clear();
144  typedef std::multimap<double, FairTimeStamp*>::iterator DataIter;
145  for (DataIter it = fDataCorr_map.begin(); it != fDataCorr_map.end();it++){
146  new ((*fOutArray)[fOutArray->GetEntries()]) FairTimeStamp(*(it->second));
147  }
148  fDataCorr_map.clear();
149  FairRootManager::Instance()->SetLastFill();
150  }
151 
152 }
TClonesArray * fOutArray
std::multimap< double, FairTimeStamp * > fDataCorr_map
Bool_t fRunContinuous
InitStatus PndSolCorrTask::Init ( )
virtual

Virtual method Init

Definition at line 31 of file PndSolCorrTask.cxx.

References fInArrays, fInBranches, fOutArray, fOutBranchName, fPersistence, fReadOutStop, fStopFunctor, i, and TString.

32 {
33  FairRootManager* ioman = FairRootManager::Instance();
34 
35  if ( ! ioman )
36  {
37  std::cout << "-E- PndSolCorrTask::Init: "
38  << "RootManager not instantiated!" << std::endl;
39  return kFATAL;
40  }
41 
42  if(fInBranches.size()==0) {
43  std::cout << "kERROR ------ no inputBranch for PndSolCorrTask -------" << std::endl;
44  return kERROR;
45 }
46 
47  fOutArray = ioman->Register(fOutBranchName.Data(), "FairTimeStamp", "EventDetermination", fPersistence);
48 
49 
50  TString inputName = "none";
51  for (size_t i = 0; i < fInBranches.size(); i++){
52  inputName = fInBranches[i];
53  fInArrays.push_back((TClonesArray*)ioman->GetObject(inputName.Data()));
54  if ( ! fInArrays[i]){
55  std::cout << " Input Array not found for PndSolCorrTask: "<< inputName << std::endl;
56  return kERROR;
57  }
58  }
59 
60  fStopFunctor= new StopTime();
61  fReadOutStop = 0;
62 
63 
64 
65  return kSUCCESS;
66 }
BinaryFunctor * fStopFunctor
Int_t i
Definition: run_full.C:25
std::vector< TString > fInBranches
TClonesArray * fOutArray
std::vector< TClonesArray * > fInArrays
TString fOutBranchName
void PndSolCorrTask::RunContinuous ( Bool_t  val = kTRUE)
inline

Definition at line 43 of file PndSolCorrTask.h.

References fRunContinuous, and val.

43 {fRunContinuous = val;};
Double_t val[nBoxes][nFEBox]
Definition: createCalib.C:11
Bool_t fRunContinuous
void PndSolCorrTask::SetOutBranchName ( TString  name)
inline

Definition at line 40 of file PndSolCorrTask.h.

References fOutBranchName, and name.

Referenced by PndT0CandidateTask::PndT0CandidateTask().

40 {fOutBranchName = name;};
TString name
TString fOutBranchName
void PndSolCorrTask::SetPersistence ( Bool_t  val)
inline

Definition at line 44 of file PndSolCorrTask.h.

References fPersistence, and val.

44 { fPersistence = val;};
Double_t val[nBoxes][nFEBox]
Definition: createCalib.C:11
FairTimeStamp * PndSolCorrTask::SolCorr ( FairHit *  inHit)

Definition at line 154 of file PndSolCorrTask.cxx.

References C().

Referenced by Exec().

154  {
155 
156  double time, time_corr, trackLength;
157  TVector3 hitPos;
158  FairMultiLinkedData* links = NULL;
159  FairTimeStamp* outStamp;
160 
161  inHit->Position(hitPos);
162  trackLength = hitPos.Mag();
163  time = inHit->GetTimeStamp();
164  time_corr = time - (trackLength/100/TMath::C()*1000000000 ); // trackLength in cm, timeStamps in ns!
165  outStamp = new FairTimeStamp(time_corr);
166  outStamp->SetLink(inHit->GetEntryNr());
167  links = inHit->GetPointerToLinks();
168  if(links != NULL) outStamp->AddLinks(*links);
169 
170  return outStamp;
171 
172 }
int Pic_FED Eff_lEE C()

Member Data Documentation

std::multimap<double, FairTimeStamp*> PndSolCorrTask::fDataCorr_map
private

Definition at line 56 of file PndSolCorrTask.h.

Referenced by Exec(), and FinishTask().

std::vector<TClonesArray*> PndSolCorrTask::fInArrays
private

Definition at line 53 of file PndSolCorrTask.h.

Referenced by Exec(), and Init().

std::vector<TString> PndSolCorrTask::fInBranches
private

Definition at line 52 of file PndSolCorrTask.h.

Referenced by AddInputBranch(), Exec(), and Init().

TClonesArray* PndSolCorrTask::fOutArray
private

Definition at line 54 of file PndSolCorrTask.h.

Referenced by Exec(), FinishTask(), and Init().

TString PndSolCorrTask::fOutBranchName
private

Definition at line 51 of file PndSolCorrTask.h.

Referenced by Init(), PndSolCorrTask(), and SetOutBranchName().

Bool_t PndSolCorrTask::fPersistence
private

Definition at line 60 of file PndSolCorrTask.h.

Referenced by Init(), PndSolCorrTask(), and SetPersistence().

double PndSolCorrTask::fReadOutStop
private

Definition at line 63 of file PndSolCorrTask.h.

Referenced by Exec(), and Init().

Bool_t PndSolCorrTask::fRunContinuous
private

Definition at line 58 of file PndSolCorrTask.h.

Referenced by Exec(), FinishTask(), PndSolCorrTask(), and RunContinuous().

BinaryFunctor* PndSolCorrTask::fStopFunctor
private

Definition at line 62 of file PndSolCorrTask.h.

Referenced by Exec(), and Init().


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