10 #include <FairRunAna.h>
11 #include <FairRuntimeDb.h>
15 #include <TTreeReaderValue.h>
25 fSttParameters = NULL;
30 fTrackCandName =
"PartialMatchCand";
33 verboseMatches =
false;
41 FairRuntimeDb *
rtdb = FairRunAna::Instance()->GetRuntimeDb();
48 FairRootManager *ioman = FairRootManager::Instance();
50 std::cout <<
"-E- PatternDBGenerator::Init: FairRootManager not instantiated!" << std::endl;
54 fEventHeader = (TClonesArray*) ioman->GetObject(
"EventHeader.");
56 std::cout <<
"-E- PatternDBGenerator:Init: EventHeader not instantiated!" << std::endl;
60 fSTTHitArray = (TClonesArray*) ioman->GetObject(
"STTHit");
84 std::set<int> tubeIDs;
85 for (
int iHit = 0; iHit < nSttHits; ++iHit) {
88 tubeIDs.insert(tubeID);
97 std::set<int> intersection;
100 std::set_intersection(tubeIDs.begin(), tubeIDs.end(), dbPattern.begin(), dbPattern.end(), std::inserter(intersection,intersection.begin()));
102 float matchRatio = (float)intersection.size() / (float)dbPattern.size();
110 if (intersection.size() > 0) {
111 std::cout <<
"matching tubes: ";
112 for (
auto const& tube : intersection) {
113 std::cout << tube <<
" ";
115 std::cout << std::endl;
123 if (
verboseMatches) std::cout <<
"partial matches found: " << matches << std::endl;
130 for (
int iHit = 0; iHit < nSttHits; ++iHit) {
134 auto search = partialMatch.find(tubeID);
136 if (search != partialMatch.end()) {
137 trackCand.
AddHit(sttHit->GetEntryNr(),iHit);
144 dbFile =
new TFile(filename,
"READ");
150 patternTree->SetBranchAddress(
"pattern", &pattern);
152 Long64_t nPatterns =
patternTree->GetEntriesFast();
153 for (Long64_t iEntry = 0; iEntry < nPatterns; ++iEntry) {
155 std::set<int> tubeIDs = pattern->
GetTubeIDs();
158 std::cout <<
"# DB patterns: " <<
dbTubeIDs.size() << std::endl;
virtual void Exec(Option_t *opt)
virtual void SetParContainers()
std::vector< PndTrackCand > fPartialCand
virtual void FinishTask()
TClonesArray * fEventHeader
PndGeoSttPar * fSttParameters
void LoadPatternDB(TString filename)
void AddHit(UInt_t detId, UInt_t hitId, Double_t rho)
virtual InitStatus Init()
std::set< int > GetTubeIDs() const
TClonesArray * fSTTHitArray
virtual ~PndPatternMatcher()
TClonesArray * fPartialMatchCand
std::vector< std::set< int > > dbTubeIDs
void CreateTrackCandFromMatch(std::set< int > partialMatch)