8 #include "TClonesArray.h"
9 #include "TParticlePDG.h"
12 #include "FairRootManager.h"
14 #include "FairRuntimeDb.h"
15 #include "FairRunAna.h"
16 #include "FairEventHeader.h"
32 FairRuntimeDb*
rtdb = FairRunAna::Instance()->GetRuntimeDb();
43 FairRootManager* ioman = FairRootManager::Instance();
46 std::cout <<
"-E- PndSttSkewedCombineTask::Init: "
47 <<
"RootManager not instantiated!" << std::endl;
51 fEventHeader = (TClonesArray*) ioman->GetObject(
"EventHeader.");
53 std::cout <<
"-W- PndSttSkewedCombineTask::Init: No EventHeader array! Needed for EventNumber" << endl;
65 fSttHits = (TClonesArray*) FairRootManager::Instance()->GetObject(
"STTHit");
72 fCombinedSkewedHits = ioman->Register(
"STTCombinedSkewedHits",
"PndSttSkewedHit",
"Stt", kTRUE);
75 std::cout <<
"-I- PndSttSkewedCombineTask: Initialisation successfull" << std::endl;
84 FairEventHeader* myEventHeader = (FairEventHeader*)
fEventHeader;
85 int eventNumber = myEventHeader->GetMCEntryNumber();
88 std::cout <<
"====================Begin PndSttSkewedCombineTask::Exec=======================" << endl;
89 std::cout <<
"Event #" << eventNumber << endl;
94 FairRootManager *ioman = FairRootManager::Instance();
96 std::map<int, PndSttHit*> tubeMap;
97 for (
int i = 0;
i <
fSttHits->GetEntriesFast();
i++){
99 myHit->SetEntryNr(FairLink(-1, eventNumber, ioman->GetBranchId(
"STTHit"),
i));
103 for (
int i = 0;
i <
fSttHits->GetEntriesFast();
i++){
106 if (
fVerbose > 1) std::cout <<
"PndSttSkewedCombineTask::Exec: TubeID " << myHit->
GetTubeID() <<
" RowNr " << strawRow << std::endl;
107 if (strawRow > 6 && strawRow < 16 && strawRow % 2 == 1) {
109 for (
int j = 0; j < tmp.GetSize(); j++){
111 if (tubeMap.find(tmp.At(j)) != tubeMap.end()) {
112 TVector3 poca, pocaError;
113 if (
fVerbose > 1) std::cout <<
"PndSttSkewedCombineTask::Exec: FoundNeighbourHit " << tubeMap[tmp.At(j)]->GetTubeID() << std::endl;
116 if (
fVerbose > 1) std::cout <<
"PndSttSkewedCombineTask::Exec: poca: " << poca.x() <<
"/" << poca.y() <<
"/" << poca.z() <<
" " << distance << std::endl;
118 skewedHit->AddLink(myHit->GetEntryNr());
119 skewedHit->AddLink(tubeMap[tmp.At(j)]->GetEntryNr());
120 skewedHit->SetEntryNr(FairLink(-1, eventNumber, ioman->GetBranchId(
"STTCombinedSkewedHits"),
fCombinedSkewedHits->GetEntriesFast()-1));
virtual void Exec(Option_t *opt)
TClonesArray * fTubeArray
TClonesArray * fCombinedSkewedHits
virtual void FinishEvent()
Double_t CalculateStrawPoca(PndSttHit *hit1, PndSttHit *hit2, TVector3 &poca)
void GenerateStrawMap(TClonesArray *const stt_tube_array)
TClonesArray * FillTubeArray()
PndSttGeometryMap * fGeometryMap
TClonesArray * fEventHeader
virtual void SetParContainers()
int GetRow(int strawindex) const
PndGeoSttPar * fSttParameters
virtual InitStatus Init()
TArrayI GetNeighboringsByMap(int tubeId)