10 #include <FairRootManager.h>
13 #include "TClonesArray.h"
66 for (
int i = 0;
i < cands.second->GetEntries();
i++){
69 for (
auto hit : hits) {
78 FairRootManager* ioman = FairRootManager::Instance();
81 branch.second = (TClonesArray*)ioman->GetObject(branch.first);
82 TString unassignedName = branch.first;
83 unassignedName +=
"Unassigned";
84 fHitBranches[branch.first] = branch.second;
85 std::cout <<
"PndUnassignedHitsTask::RegisterBranches " << branch.first <<
" " << branch.second << std::endl;
93 FairRootManager* ioman = FairRootManager::Instance();
95 std::cout <<
"PndUnassignedHitsTask::RegisterTrackCands" << std::endl;
98 cand.second = (TClonesArray*) ioman->GetObject(cand.first);
100 fTrackCands[cand.first] = cand.second;
106 std::set<FairLink> usedHits =
fHitsInTracks.GetLinksWithType(FairRootManager::Instance()->GetBranchId(branchName)).GetLinks();
110 std::vector<int> unusedHits;
111 for (
int i = 0;
i < hits->GetEntries();
i++){
112 unusedHits.push_back(
i);
115 std::cout <<
"Hits: " << hits << std::endl;
116 std::cout <<
"Size of Hits: " << hits->GetEntries() << std::endl;
117 for (
auto reviter = usedHits.rbegin(); reviter != usedHits.rend(); ++reviter){
119 unusedHits.erase(unusedHits.begin()+reviter->GetIndex());
122 std::cout <<
"Size of UnusedHits: " << unusedHits.size() << std::endl;
124 if (unusedHits.size() > 0){
129 std::cout <<
"Size of UnassignedBranch: " <<
fUnassignedHitBranches[branchName +=
"Unassigned"]->GetEntries() << std::endl;
134 TString outputBranchName = branchName;
135 outputBranchName +=
"Unassigned";
137 std::cout <<
"OutputArray: " << outputArray << std::endl;
138 std::cout <<
"HitBranch size: " <<
fHitBranches[branchName]->GetEntries() << std::endl;
139 for (
unsigned int i = 0;
i < unusedHits.size();
i++){
141 FairHit* myHit = (FairHit*)
fHitBranches[branchName]->
At(unusedHits[
i]);
142 if (myHit ==
nullptr)
continue;
144 if (branchName.Contains(
"STTHit")){
146 }
else if (branchName.Contains(
"GEMHit")){
148 }
else if (branchName.Contains(
"MVDHitsPixel") || branchName.Contains(
"MVDHitsStrip")){
150 }
else if (branchName.Contains(
"FTSHit")){
std::vector< PndTrackCandHit > GetSortedHits()
FairMultiLinkedData fHitsInTracks
virtual void Exec(Option_t *opt)
virtual void SetParContainers()
std::map< TString, TClonesArray * > fHitBranches
virtual void AddHitBranch(TString branchName)
std::map< TString, TClonesArray * > fTrackCands
void RegisterTrackCands()
std::map< TString, TClonesArray * > fUnassignedHitBranches
virtual InitStatus Init()
void FillUnassignedHits(TString branchName)
virtual void AddTrackCands(TString trackCandName)
void FillOutputBranch(TString branchName, std::vector< int > unusedHits)
cout<<"the Event No is "<< i<< endl;{{if(hit_array->GetEntriesFast()!=mc_array->GetEntriesFast()) continue;PndSdsHit *hit=(PndSdsHit *) hit_array-> At(j)