14 fIoman = FairRootManager::Instance();
16 fHits = (TClonesArray*)
fIoman->GetObject(
"FTSHit");
18 planes =
fIoman->Register(
"Planes",
"PndTrack",
"FTS", kTRUE);
54 <<
">>>>>>>>>>>>>>====================PndForwardTrackFinderTask::Exec====================<<<<<<<<<<<<<<"
56 std::cout <<
"EventNumber:" <<
eventNumber++ << std::endl;
60 std::vector<PndFtsHit*>
hits;
61 for (
int i = 0;
i <
fHits->GetEntries();
i++) {
63 hit->SetEntryNr(FairLink(-1,
fIoman->GetEntryNr(),
fIoman->GetBranchId(
"FTSHit"),
i));
75 for (
map<Int_t, vector<PndTrackCand>>::iterator it = result.begin();
76 it != result.end(); it++) {
77 for(
size_t i=0;
i<it->second.size();
i++)
84 cout <<
"Too mutch tracks for reconstruction" << endl;
93 map<Int_t, vector<PndFtsExpandedTrackCand>> expandedTrackCands;
94 for (
map<Int_t, vector<PndTrackCand>>::iterator it = result.begin();
95 it != result.end(); it++) {
96 vector<PndTrackCand> myCands = it->second;
97 for(
size_t i=0;
i<myCands.size();
i++){
101 expandedTrackCands[it->first].push_back(c);
173 if (branchID == -1) {
174 std::cout <<
"PndForwardTrackFinderTask::saveCombined branchID == -1" << std::endl;
177 for (
size_t i = 0;
i < combined.size();
i++) {
181 FairTrackParP tp1(v, v, v, v, 1, v, v, v);
183 for (
size_t j = 0; j < l.
getHits().size(); j++) {
191 c.
AddHit(hit->GetEntryNr(), j);
200 for (
map<Int_t, vector<PndFtsExpandedTrackCand>>::iterator it =
res.begin();it !=
res.end(); it++) {
201 vector<PndFtsExpandedTrackCand> etc = it->second;
202 for(
size_t i=0;
i<etc.size();
i++){
205 for(
size_t j=0;j<approxs.size();j++){
208 for (
size_t k = 0; k < approx.
getHits().size(); k++) {
210 hit->SetEntryNr(FairLink(-1,
fIoman->GetEntryNr(),
fIoman->GetBranchId(
"CorrectedHits"),hitNum));
211 new ((*correctedHits)[hitNum++])
PndFtsHit(*hit);
212 trackCand.
AddHit(hit->GetEntryNr(), k);
217 FairTrackParP tp2(v, 2 * v, v, v, 1, v, v, v);
219 new ((*correctedTracklets)[trackNum++])
PndTrack(tp1, tp2, trackCand);
230 for(
size_t k=0;k<coll.size();k++){
235 vector<PndLineApproximation> *approx = c.
getLines();
236 for(
size_t i=0;
i<approx->size();
i++){
239 for(
size_t j=0;j<a.
getHits().size();j++){
241 hit->SetEntryNr(FairLink(-1,
fIoman->GetEntryNr(),
fIoman->GetBranchId(
"TrackCollectionHits"),hitNum));
242 new ((*fTrackCollectionHits)[hitNum++])
PndFtsHit(*hit);
243 trackCand.
AddHit(hit->GetEntryNr(), j);
246 FairTrackParP tp2(v, 2 * v, v, v, 1, v, v, v);
247 new ((*fTrackCollection)[trackNum++])
PndTrack(tp1, tp2, trackCand);
250 FairTrackParP tp2(v, 2 * v, v, v, 1, v, v, v);
252 new ((*fTrackCollection)[trackNum++])
PndTrack(tp1, tp2, trackCand);
259 for(
size_t i=0;
i<c.size();
i++){
270 if(dist>=100)
dists[19]++;
271 else dists[(Int_t)(dist/5)]++;
272 if(angle>=100)
angles[19]++;
273 else angles[(Int_t)(angle/5)]++;
279 for(
size_t i=0;
i<a.size();
i++){
280 Int_t mc2 =
getMcId(a[
i].getHits());
281 if(mc==mc2)
return a[
i];
289 Int_t mcTrackBranchId =
fIoman->GetBranchId(
"MCTrack");
290 vector<Int_t> trackIDs;
291 for(
size_t i=0;
i<hits.size();
i++){
293 FairLink link = hit->GetEntryNr();
295 FairMultiLinkedData mld = p->GetLinksWithType(mcTrackBranchId);
296 FairLink linksToMc = mld.GetLink(0);
297 int trackID = linksToMc.GetIndex();
298 trackIDs.push_back(trackID);
303 for(
size_t i=0;
i<trackIDs.size();
i++){
305 if(m[trackIDs[
i]] > maxVal){
306 maxVal = m[trackIDs[
i]];
vector< PndFtsHit * > getHits()
void setHits(std::vector< PndFtsHit * > hits)
Double_t getDist2D(TVector3 b1, TVector3 b2, TVector3 d1, TVector3 d2)
TClonesArray * fFinalSolution
map< Int_t, vector< PndTrackCand > > getTracklets()
void createStatictcs(vector< PndTrackCollection > c, vector< PndLineApproximation > a)
virtual void SetParContainers()
TClonesArray * correctedTracklets
TClonesArray * fGlobalTracks
void init(vector< PndLineApproximation > b, map< Int_t, vector< PndFtsExpandedTrackCand >> c)
void setZValue(Double_t z)
PndTrackCombiner * fPndTrackCombiner
TClonesArray * rootBranches[5]
virtual ~PndForwardTrackFinderTask()
TClonesArray * fGlobalTracksHits
PndFtsExpandedTrackCand createExpandedTrackCand(PndTrackCand &cand)
void addUnusedHits(vector< PndFtsHit * > hits, vector< PndTrackCollection > &c)
void AddHit(UInt_t detId, UInt_t hitId, Double_t rho)
TClonesArray * fTrackCollectionHits
Double_t getAngle2D(TVector3 d1, TVector3 d2)
PndWayFollower * fWayFollower
vector< PndTrackCollection > followLines(Int_t begin)
TClonesArray * fLayerTracks
std::vector< PndTrackCand > fFirstTrackCand
void saveTrackCollection(vector< PndTrackCollection > coll, Bool_t withOrgHits)
PndFtsLineApproximator * fPndFtsLineApproximator
vector< PndLineApproximation > getLineApproximations()
vector< PndLineApproximation > combineModules(vector< PndLineApproximation > m1, vector< PndLineApproximation > m2)
Int_t getMcId(vector< PndFtsHit * > hits)
void saveCombined(vector< PndLineApproximation > combined, Int_t branch, Int_t branchID, Bool_t useOrgHits)
TClonesArray * correctedHits
virtual InitStatus Init()
map< Int_t, PndFtsHit * > fOriginalHits
vector< PndLineApproximation > * getLines()
Int_t combinedTracksHitNum
void init(map< Int_t, vector< PndFtsExpandedTrackCand >> c)
PndModuleCombiner * fModuleCombiner
int hit(Int_t nEvents=0, TString inFile="sim.root", TString parFile="par.root", TString inDigi="digi.root", TString outFile="hit.root", Int_t timeBased=0)
vector< PndLineApproximation > combine(Int_t bigLayer)
PndTrack getPndTrack(map< Int_t, PndFtsHit * > orgHits)
TClonesArray * fFirstTrackCandArray
virtual void FinishEvent()
void saveCorrectedTracklets(map< Int_t, vector< PndFtsExpandedTrackCand >>)
vector< PndFtsHit * > getHits()
virtual void Exec(Option_t *opt)
TClonesArray * fLayerTracksHits
PndFtsCellTrackletGenerator * fPndFtsCellTrackletGenerator
PndLineApproximation getBest(PndTrackCollection &c, vector< PndLineApproximation > a)
ClassImp(PndForwardTrackFinderTask)
TClonesArray * fTrackCollection
Int_t combinedTracksTrackNum