9 #include <FairLogger.h>
10 #include <FairRootManager.h>
12 #include <FairRuntimeDb.h>
23 : fInputBranchName(
"AtEventH"), fOutputBranchName(
"AtPatternEvent"), FairTask(
"AtPRAtask"),
24 fPatternEventArray(
"AtPatternEvent", 1)
27 LOG(debug) <<
"Default Constructor of AtPRAtask";
30 kIsPersistence = kFALSE;
43 kSetPrunning = kFALSE;
51 LOG(debug) <<
"Destructor of AtPRAtask";
56 kIsPersistence = value;
65 LOG(debug) <<
"SetParContainers of AtPRAtask";
67 FairRun *run = FairRun::Instance();
69 LOG(fatal) <<
"No analysis run!";
71 FairRuntimeDb *db = run->GetRuntimeDb();
73 LOG(fatal) <<
"No runtime database!";
75 fPar = (
AtDigiPar *)db->getContainer(
"AtDigiPar");
77 LOG(fatal) <<
"AtDigiPar not found!!";
82 LOG(debug) <<
"Initilization of AtPRAtask";
84 if (fPRAlgorithm == 0) {
85 LOG(info) <<
"Using Track Finder TriplClust algorithm";
97 std::cout <<
" Track Finder TriplClust parameters (see Dalitz et al.) "
99 std::cout <<
" T Cluster : " << fHCt <<
"\n";
100 std::cout <<
" S Cluster : " << fHCs <<
"\n";
101 std::cout <<
" K Triplet : " << fHCk <<
"\n";
102 std::cout <<
" N Triplet : " << fHCn <<
"\n";
103 std::cout <<
" M Cluster : " << fHCm <<
"\n";
104 std::cout <<
" R Smooth : " << fHCr <<
"\n";
105 std::cout <<
" A Triplet : " << fHCa <<
"\n";
110 std::cout <<
" Track finder - Parameters for clusterization "
112 std::cout <<
" Cluster radius " << fClusterRadius <<
"\n";
113 std::cout <<
" Cluster distance " << fClusterDistance <<
"\n";
115 }
else if (fPRAlgorithm == 1) {
116 LOG(info) <<
"Using RANSAC algorithm";
118 }
else if (fPRAlgorithm == 2) {
119 LOG(info) <<
"Using Hough transform algorithm";
124 std::cout <<
" Track prunning : " << kSetPrunning <<
"\n";
127 std::cout <<
" Number of k-nearest neighbors (kNN) : " << fKNN <<
"\n";
129 std::cout <<
" Std deviation multiplier : " << fStdDevMulkNN <<
"\n";
131 std::cout <<
" kNN Distance threshold : " << fkNNDist <<
"\n";
136 FairRootManager *ioMan = FairRootManager::Instance();
137 if (ioMan ==
nullptr) {
138 LOG(error) <<
"Cannot find RootManager!";
142 fEventHArray =
dynamic_cast<TClonesArray *
>(ioMan->GetObject(fInputBranchName));
143 if (fEventHArray ==
nullptr) {
144 LOG(error) <<
"Cannot find AtEvent array!";
148 ioMan->Register(fOutputBranchName,
"AtTPC", &fPatternEventArray, kIsPersistence);
155 LOG(debug) <<
"Exec of AtPRAtask";
157 fPatternEventArray.Delete();
159 if (fEventHArray->GetEntriesFast() == 0)
163 auto &hitArray =
event.
GetHits();
165 std::cout <<
" -I- AtPRAtask - Event Number : " <<
event.GetEventID() <<
"\n";
169 if (hitArray.size() > fMinNumHits && hitArray.size() < fMaxNumHits) {
171 new (fPatternEventArray[0])
AtPatternEvent(std::move(*patternEvent));
174 }
catch (std::runtime_error e) {
175 std::cout <<
"Analyzation failed! Error: " << e.what() << std::endl;
183 LOG(debug) <<
"Finish of AtPRAtask";