FairRoot/PandaRoot
Public Member Functions | Private Member Functions | Private Attributes | List of all members
PndMdtTrkProducer Class Reference

#include <PndMdtTrkProducer.h>

Inheritance diagram for PndMdtTrkProducer:
PndPersistencyTask

Public Member Functions

 PndMdtTrkProducer ()
 
 ~PndMdtTrkProducer ()
 
virtual InitStatus Init ()
 
virtual void Exec (Option_t *opt)
 
virtual void SetParContainers ()
 
virtual void AlgorithmWithLheGenTrack ()
 
void SetRecMethod (Int_t rec_method)
 
void SetPersistency (Bool_t val=kTRUE)
 
Bool_t GetPersistency ()
 

Private Member Functions

PndMdtTrkAddTrk (PndMdtTrk *track)
 
Bool_t MdtMapping ()
 
void Reset ()
 
void SetGeometry ()
 
 ClassDef (PndMdtTrkProducer, 1)
 

Private Attributes

Int_t fRec_method
 
TClonesArray * fHitArray
 
TClonesArray * fLheGenTrack
 
TClonesArray * fTrkArray
 
map< Int_t, vector< Int_t > > mapMdtBarrel
 
map< Int_t, vector< Int_t > > mapMdtEndcap
 
map< Int_t, vector< Int_t > > mapMdtForward
 
map< Int_t, TVector3 > mapHitDirection
 
map< Int_t, Float_t > mapHitDistance
 
Float_t mdtLayerPos [3][20]
 
Float_t mdtIronThickness [3][20]
 
Float_t mdtModule1MaxZ
 

Detailed Description

Definition at line 19 of file PndMdtTrkProducer.h.

Constructor & Destructor Documentation

PndMdtTrkProducer::PndMdtTrkProducer ( )

Default constructor

Definition at line 33 of file PndMdtTrkProducer.cxx.

References fRec_method, Reset(), and PndPersistencyTask::SetPersistency().

33  :
34  PndPersistencyTask(" MDT Tracklet Producer") {
35  Reset();
36  SetPersistency(kTRUE);
37  fRec_method = 0; //default, not use lhetrack as seed
38 }
void SetPersistency(Bool_t val=kTRUE)
PndMdtTrkProducer::~PndMdtTrkProducer ( )

Destructor

Definition at line 42 of file PndMdtTrkProducer.cxx.

42 { }

Member Function Documentation

PndMdtTrk * PndMdtTrkProducer::AddTrk ( PndMdtTrk track)
private

Definition at line 655 of file PndMdtTrkProducer.cxx.

References fTrkArray.

Referenced by Exec().

655  {
656  // Creates a new hit in the TClonesArray.
657 
658  // Float_t chi2=0;
659 // for (Int_t ll=1; ll<10; ll++)
660 // {
661 // if (track->GetHitBit(ll)==0) continue;
662 // if (ll==1)
663 // chi2 = chi2 + (track->GetHit(ll)/1.5)*(track->GetHitAngle(ll)/1.5); // manual correction for the first layer
664 // else
665 // chi2 = chi2 + track->GetHitAngle(ll)*track->GetHitAngle(ll);
666 // }
667 // track->SetChi2(chi2);
668 
669  TClonesArray& trkRef = *fTrkArray;
670  Int_t size = trkRef.GetEntriesFast();
671  return new(trkRef[size]) PndMdtTrk(*track);
672 }
TClonesArray * fTrkArray
void PndMdtTrkProducer::AlgorithmWithLheGenTrack ( )
virtual

Definition at line 683 of file PndMdtTrkProducer.cxx.

References Bool_t, fHitArray, fLheGenTrack, PndMdtHit::GetLayerID(), PndMdtHit::GetModule(), PndTrack::GetParamLast(), i, mapHitDirection, mapHitDistance, mm, par, and track.

Referenced by Exec().

684 {
685  if ( ! fLheGenTrack ){ return;}
686  Int_t nTracks = fLheGenTrack->GetEntriesFast();
687  for (Int_t i = 0; i < nTracks; i++) {
688  PndTrack* track = (PndTrack*) fLheGenTrack->At(i);
689  Int_t ierr = 0;
690  FairTrackParP par = track->GetParamLast();
691  if ((par.GetMomentum().Mag()<0.1) || (par.GetMomentum().Mag()>15.) )continue;
692  FairTrackParH *helix = new FairTrackParH(&par, ierr);
693 
694  //loop mdthit, to find distance
695  PndMdtHit *mdtHit = NULL;
696  Int_t mdtEntries = fHitArray->GetEntriesFast();
697  Int_t mdtIndex = -1; //mdtMod = 0, , mdtLayer = 0 //[R.K. 01/2017] unused variable
698  //Float_t mdtGLength = -1000; //[R.K. 03/2017] unused variable?
699  Float_t mdtQuality = 1000000;
700 
701  //Float_t chi2 = 0; //[R.K. 01/2017] unused variable?
702  TVector3 vertex(0., 0., 0.);
703  TVector3 mdtPos(0., 0., 0.);
704  TVector3 momentum(0., 0., 0.);
705  TVector3 momentum_keep(0., 0., 0.);
706 
707  for (Int_t mm = 0; mm<mdtEntries; mm++)
708  {
709  mdtHit = (PndMdtHit*)fHitArray->At(mm);
710  if (mdtHit->GetLayerID()!=0) continue; //only deal with the first layer
711  if (mdtHit->GetModule()>2) continue;
712  mdtHit->Position(mdtPos);
713  if(1) //fGeanePro
714  {
715  FairGeanePro *fProMdt = new FairGeanePro();
716  fProMdt->SetPoint(mdtPos);
717  fProMdt->PropagateToPCA(1, 1);
718  vertex.SetXYZ(-10000, -10000, -10000); // reset vertex
719  FairTrackParH *fRes= new FairTrackParH();
720  Bool_t rc = fProMdt->Propagate(helix, fRes, -13*helix->GetQ());//-13*pidCand->GetCharge());
721  if (!rc) continue;
722 
723  vertex.SetXYZ(fRes->GetX(), fRes->GetY(), fRes->GetZ());
724  momentum.SetXYZ(fRes->GetPx(), fRes->GetPy(), fRes->GetPz()); //set momentum, to be used as the direction to extrapolated to next layer.
725  //mdtGLength = fProMdt->GetLengthAtPCA(); //[R.K. 03/2017] unused variable?
726  }
727 
728  Float_t dist;
729  if (mdtHit->GetModule()==1)
730  {
731  dist = (mdtPos-vertex).Mag2();
732  }
733  else
734  {
735  dist = (vertex.X()-mdtPos.X())*(vertex.X()-mdtPos.X())+(vertex.Y()-mdtPos.Y())*(vertex.Y()-mdtPos.Y());
736  }
737 
738 
739  if ( mdtQuality > dist)
740  {
741  mdtIndex = mm;
742  mdtQuality = dist;
743  momentum_keep = momentum;
744  //mdtMod = mdtHit->GetModule(); //[R.K. 01/2017] unused variable
745  //mdtLayer = 1; //[R.K. 01/2017] unused variable
746  }
747  }// found one closest hit to the track;
748 
749  Float_t mdtCorrCut = 900; //temporary. need study, and better to set outside.
750 
751  if(mdtQuality < mdtCorrCut) {
752  mapHitDirection[mdtIndex] = momentum_keep;
753  mapHitDistance[mdtIndex] = mdtQuality;
754  }
755  }
756 
757 }
Short_t GetLayerID() const
Definition: PndMdtHit.h:34
Int_t i
Definition: run_full.C:25
PndRiemannTrack track
Definition: RiemannTest.C:33
Double_t par[3]
FairTrackParP GetParamLast()
Definition: PndTrack.h:50
Double_t const mm
map< Int_t, Float_t > mapHitDistance
Short_t GetModule() const
Definition: PndMdtHit.h:32
TClonesArray * fHitArray
map< Int_t, TVector3 > mapHitDirection
TClonesArray * fLheGenTrack
PndMdtTrkProducer::ClassDef ( PndMdtTrkProducer  ,
 
)
private
void PndMdtTrkProducer::Exec ( Option_t *  opt)
virtual

Virtual method Exec

Definition at line 285 of file PndMdtTrkProducer.cxx.

References AddTrk(), AlgorithmWithLheGenTrack(), fHitArray, fRec_method, fTrkArray, mapHitDirection, mapHitDistance, mapMdtBarrel, mapMdtEndcap, mapMdtForward, mdtIronThickness, mdtLayerPos, MdtMapping(), mdtModule1MaxZ, PndMdtTrk::SetHitDeltaAngle(), PndMdtTrk::SetHitDist(), PndMdtTrk::SetHitIndex(), PndMdtTrk::SetHitMult(), PndMdtTrk::SetIronDist(), PndMdtTrk::SetLayerCount(), PndMdtTrk::SetLayerDist(), PndMdtTrk::SetMaxLayer(), PndMdtTrk::SetModule(), and CAMath::Sqrt().

286 {
287  // Reset output array
288  fTrkArray->Delete();
289  if (!MdtMapping()) return; // exit if the event contains no Mdt hits
291 
292 
293  TVector3 direction(1., 0., 0.); //direction of hits in previous 2 layers, lyt
294  Float_t deltaAngle = -1.; //lyt
295 
296  if (mapMdtBarrel.size()>0)
297  {
298  vector<Int_t>vecMdt0 = mapMdtBarrel[0];
299  TVector3 oldPos(0., 0., 0.);
300  TVector3 newPos(0., 0., 0.);
301  for (size_t iMap = 0; iMap < vecMdt0.size(); iMap++) // loop over hits in layer0
302  {
303  Int_t layerCount = 1, maxLayer = 0;
304  Float_t layerDist = 0.; Float_t ironDist = 0.;
305 
306  //check whether this hit is available in mapHitDirection
307  map<Int_t, TVector3>::const_iterator hit_direction_iter;
308  map<Int_t, Float_t>::const_iterator hit_distance_iter;
309 
310  hit_direction_iter = mapHitDirection.find(vecMdt0[iMap]);
311  hit_distance_iter = mapHitDistance.find(vecMdt0[iMap]);
312  if(fRec_method == 1 && hit_direction_iter == mapHitDirection.end()){
313  //cout<<"this hit is not correlated to any track..."<<endl;
314  continue;
315  }
316  direction = (*hit_direction_iter).second;
317  Float_t dist_layer0_lhetrack = (*hit_distance_iter).second;
318 
319  PndMdtTrk *mdtTrk = new PndMdtTrk();
320  // mdtTrk->SetHitIndex(0, vecMdt0[iMap]);
321  mdtTrk->SetModule(1);
322 
323  PndMdtHit* mdtHit0 = (PndMdtHit*) fHitArray->At(vecMdt0[iMap]);
324  mdtHit0->Position(oldPos);
325  mdtTrk->SetHitIndex(0, vecMdt0[iMap]);
326  mdtTrk->SetHitDist(0, dist_layer0_lhetrack); //set to be the distance of hit with lhetrack lyt
327  mdtTrk->SetHitDeltaAngle(0, -1.); //lyt
328  mdtTrk->SetLayerDist(0, 0);
329  mdtTrk->SetHitMult(0, 1);
330 
331  map<Int_t, vector<Int_t> >::const_iterator layer_iter;
332  for (layer_iter=mapMdtBarrel.begin();layer_iter!=mapMdtBarrel.end();++layer_iter) // layer loop
333  {
334  if (((*layer_iter).first)==0) continue; // skip first layer
335  if (((*layer_iter).first-maxLayer) > 1) break;
336  layerDist = mdtLayerPos[0][(*layer_iter).first] - mdtLayerPos[0][maxLayer];
337  vector<Int_t>vecMdt = (*layer_iter).second;
338  Float_t corrDist = -1;
339  Int_t corrId = -1;
340  TVector3 corrPos(0., 0., 0.);
341  Int_t layerMult = 0;
342  for (size_t hit_iter = 0; hit_iter < vecMdt.size(); ++hit_iter)
343  {
344  PndMdtHit* mdtHit = (PndMdtHit*) fHitArray->At(vecMdt[hit_iter]);
345  mdtHit->Position(newPos);
346  Float_t hitDist = (oldPos-newPos).Mag2();
347  deltaAngle = direction.Angle(newPos-oldPos); //lyt 13042010
348  direction = newPos-oldPos; //lyt
349  if ( (corrDist<0.) || (corrDist > hitDist) ) // find closes hit
350  {
351  corrDist = hitDist;
352  corrId = vecMdt[hit_iter];
353  corrPos = newPos;
354  }
355  if ( (hitDist>0.) && ((TMath::Sqrt(hitDist)/layerDist) < 2.5) ) layerMult++;
356  }
357 
358  if ( (corrDist>0.) && ((TMath::Sqrt(corrDist)/layerDist) < 2.5) ) // if there in one correlated hit closer than 2.5 layer distance
359  {
360  ironDist = ironDist + mdtIronThickness[0][(*layer_iter).first-1] * TMath::Sqrt(corrDist)/layerDist;
361  mdtTrk->SetHitIndex(layerCount, corrId);
362  mdtTrk->SetHitDist(layerCount, corrDist);
363  mdtTrk->SetHitDeltaAngle(layerCount, deltaAngle); //lyt
364  mdtTrk->SetLayerDist(layerCount, layerDist);
365  mdtTrk->SetHitMult(layerCount, layerMult);
366  maxLayer = (*layer_iter).first;
367  layerCount++;
368  oldPos = corrPos; // reset position for next mdt layer
369  }
370  else break;
371  } // end of layer loop
372 
373  // Loop over Endcap for hybrid tracklets
374  if (mapMdtEndcap.size()>0)
375  {
376  map<Int_t, vector<Int_t> >::const_iterator layer2_iter;
377  for (layer2_iter=mapMdtEndcap.begin();layer2_iter!=mapMdtEndcap.end();++layer2_iter) // layer loop
378  {
379  if (((*layer2_iter).first)==0) continue; // skip first layer
380  if (((*layer2_iter).first)==1)
381  {
382  layerDist = mdtLayerPos[1][(*layer2_iter).first] - mdtModule1MaxZ;
383  }
384  else
385  {
386  if (((*layer2_iter).first-maxLayer) > 1) break;
387  layerDist = mdtLayerPos[1][(*layer2_iter).first] - mdtLayerPos[1][maxLayer];
388  }
389  vector<Int_t>vecMdt = (*layer2_iter).second;
390  Float_t corrDist = -1;
391  Int_t corrId = -1;
392  TVector3 corrPos(0., 0., 0.);
393  Int_t layerMult = 0;
394  for (size_t hit_iter = 0; hit_iter < vecMdt.size(); ++hit_iter)
395  {
396  PndMdtHit* mdtHit = (PndMdtHit*) fHitArray->At(vecMdt[hit_iter]);
397  mdtHit->Position(newPos);
398  Float_t hitDist = (oldPos-newPos).Mag2();
399  deltaAngle = direction.Angle(newPos-oldPos); //lyt
400  direction = newPos-oldPos; //lyt
401  if ( (corrDist<0.) || (corrDist > hitDist) ) // find closes hit
402  {
403  corrDist = hitDist;
404  corrId = vecMdt[hit_iter];
405  corrPos = newPos;
406  }
407  if ( (hitDist>0.) && ((TMath::Sqrt(hitDist)/layerDist) < 2.5)) layerMult++;
408  }
409 
410  if ( (corrDist>0.) && ((TMath::Sqrt(corrDist)/layerDist) < 2.5)) // if there in one correlated hit closer than 2.5 layer distance
411  {
412  ironDist = ironDist + mdtIronThickness[1][(*layer_iter).first-1] * TMath::Sqrt(corrDist)/layerDist;
413  mdtTrk->SetModule(-1);
414  mdtTrk->SetHitIndex(layerCount, corrId);
415  mdtTrk->SetHitDist(layerCount, corrDist);
416  mdtTrk->SetHitDeltaAngle(layerCount, deltaAngle); //lyt
417  mdtTrk->SetLayerDist(layerCount, layerDist);
418  mdtTrk->SetHitMult(layerCount, layerMult);
419  layerCount++;
420  maxLayer = (*layer2_iter).first;
421  oldPos = corrPos; // reset position for next mdt layer
422  }
423  else break;
424  } // end of layer loop
425  }
426  mdtTrk->SetIronDist(ironDist);
427  mdtTrk->SetMaxLayer(maxLayer);
428  mdtTrk->SetLayerCount(layerCount);
429  AddTrk(mdtTrk); // storing the PndMdtTrk object
430  delete(mdtTrk);
431  } // end of layer0 loop
432  }
433 
434  if (mapMdtEndcap.size()>0)
435  {
436  vector<Int_t>vecMdt0 = mapMdtEndcap[0];
437  TVector3 oldPos(0., 0., 0.);
438  TVector3 newPos(0., 0., 0.);
439 
440  for (size_t iMap = 0; iMap < vecMdt0.size(); iMap++) // loop over hits in layer0
441  {
442  Int_t layerCount = 1, maxLayer = 0;
443  Float_t layerDist = 0., ironDist = 0.;
444 
445  //check whether this hit is available in mapHitDirection
446  map<Int_t, TVector3>::const_iterator hit_direction_iter;
447  map<Int_t, Float_t>::const_iterator hit_distance_iter;
448 
449  hit_direction_iter = mapHitDirection.find(vecMdt0[iMap]);
450  hit_distance_iter = mapHitDistance.find(vecMdt0[iMap]);
451  if(fRec_method == 1&&hit_direction_iter == mapHitDirection.end()){
452  //cout<<"this hit is not correlated to any track..."<<endl;
453  continue;
454  }
455  direction = (*hit_direction_iter).second;
456  Float_t dist_layer0_lhetrack = (*hit_distance_iter).second;
457 
458  PndMdtTrk *mdtTrk = new PndMdtTrk();
459  mdtTrk->SetHitIndex(0, vecMdt0[iMap]);
460  mdtTrk->SetModule(2);
461 
462  PndMdtHit* mdtHit0 = (PndMdtHit*) fHitArray->At(vecMdt0[iMap]);
463  mdtHit0->Position(oldPos);
464  mdtTrk->SetHitIndex(0, vecMdt0[iMap]);
465  mdtTrk->SetHitDist(0, dist_layer0_lhetrack); //set to be the distance of hit with lhetrack lyt
466  mdtTrk->SetHitDeltaAngle(0, -1.); //lyt
467  mdtTrk->SetLayerDist(0, 0);
468  mdtTrk->SetHitMult(0, 1);
469 
470  map<Int_t, vector<Int_t> >::const_iterator layer_iter;
471  for (layer_iter=mapMdtEndcap.begin();layer_iter!=mapMdtEndcap.end();++layer_iter) // layer loop
472  {
473  if (((*layer_iter).first)==0) continue; // skip first layer
474  if (((*layer_iter).first-maxLayer) > 1) break;
475  layerDist = mdtLayerPos[1][(*layer_iter).first] - mdtLayerPos[1][maxLayer];
476  vector<Int_t>vecMdt = (*layer_iter).second;
477  Float_t corrDist = -1;
478  Int_t corrId = -1;
479  TVector3 corrPos(0., 0., 0.);
480  Int_t layerMult = 0;
481  for (size_t hit_iter = 0; hit_iter < vecMdt.size(); ++hit_iter)
482  {
483  PndMdtHit* mdtHit = (PndMdtHit*) fHitArray->At(vecMdt[hit_iter]);
484  mdtHit->Position(newPos);
485  Float_t hitDist = (oldPos-newPos).Mag2();
486  deltaAngle = direction.Angle(newPos-oldPos); //lyt
487  direction = newPos-oldPos; //lyt
488  if ( (corrDist<0.) || (corrDist > hitDist) ) // find closes hit
489  {
490  corrDist = hitDist;
491  corrId = vecMdt[hit_iter];
492  corrPos = newPos;
493  }
494  if ( (hitDist>0.) && ((TMath::Sqrt(hitDist)/layerDist) < 2.5) ) layerMult++;
495  }
496 
497  if ( (corrDist>0.) && ((TMath::Sqrt(corrDist)/layerDist) < 2.5) ) // if there in one correlated hit closer than 2.5 later distance
498  {
499  ironDist = ironDist + mdtIronThickness[1][(*layer_iter).first-1] * TMath::Sqrt(corrDist)/layerDist;
500  mdtTrk->SetHitIndex(layerCount, corrId);
501  mdtTrk->SetHitDist(layerCount, corrDist);
502  mdtTrk->SetHitDeltaAngle(layerCount, deltaAngle); //lyt
503  mdtTrk->SetLayerDist(layerCount, layerDist);
504  mdtTrk->SetHitMult(layerCount, layerMult);
505  layerCount++;
506  maxLayer = (*layer_iter).first;
507  oldPos = corrPos; // reset position for next mdt layer
508  }
509  else break;
510 
511  } // end of layer loop
512  mdtTrk->SetIronDist(ironDist);
513  mdtTrk->SetMaxLayer(maxLayer);
514  mdtTrk->SetLayerCount(layerCount);
515  AddTrk(mdtTrk); // storing the PndMdtTrk object
516  delete(mdtTrk);
517  } // end of layer0 loop
518  } // end of endcap block
519 
520  if (mapMdtForward.size()>0)
521  {
522  vector<Int_t>vecMdt0 = mapMdtForward[0];
523  TVector3 oldPos(0., 0., 0.);
524  TVector3 newPos(0., 0., 0.);
525 
526  for (size_t iMap = 0; iMap < vecMdt0.size(); iMap++) // loop over hits in layer0
527  {
528  Int_t layerCount = 1, maxLayer = 0;
529  Float_t layerDist = 0;
530 
531  //check whether this hit is available in mapHitDirection
532  map<Int_t, TVector3>::const_iterator hit_direction_iter;
533  map<Int_t, Float_t>::const_iterator hit_distance_iter;
534 
535  hit_direction_iter = mapHitDirection.find(vecMdt0[iMap]);
536  hit_distance_iter = mapHitDistance.find(vecMdt0[iMap]);
537  if(fRec_method == 1&&hit_direction_iter == mapHitDirection.end()){
538  //cout<<"this hit is not correlated to any track..."<<endl;
539  continue;
540  }
541  direction = (*hit_direction_iter).second;
542  Float_t dist_layer0_lhetrack = (*hit_distance_iter).second;
543 
544  PndMdtTrk *mdtTrk = new PndMdtTrk();
545  mdtTrk->SetHitIndex(0, vecMdt0[iMap]);
546  mdtTrk->SetModule(4);
547 
548  PndMdtHit* mdtHit0 = (PndMdtHit*) fHitArray->At(vecMdt0[iMap]);
549  mdtHit0->Position(oldPos);
550  mdtTrk->SetHitIndex(0, vecMdt0[iMap]);
551  mdtTrk->SetHitDist(0, dist_layer0_lhetrack); //set to be the distance of hit with lhetrack lyt
552  mdtTrk->SetHitDeltaAngle(0, -1.); //lyt
553  mdtTrk->SetLayerDist(0, 0);
554  mdtTrk->SetHitMult(0, 1);
555 
556  map<Int_t, vector<Int_t> >::const_iterator layer_iter;
557  for (layer_iter=mapMdtForward.begin();layer_iter!=mapMdtForward.end();++layer_iter) // layer loop
558  {
559  if (((*layer_iter).first)==0) continue; // skip first layer
560  if (((*layer_iter).first-maxLayer) > 1) break;
561  layerDist = mdtLayerPos[2][(*layer_iter).first] - mdtLayerPos[2][maxLayer];
562  vector<Int_t>vecMdt = (*layer_iter).second;
563  Float_t corrDist = -1;
564  Int_t corrId = -1;
565  TVector3 corrPos(0., 0., 0.);
566  Int_t layerMult = 0;
567  for (size_t hit_iter = 0; hit_iter < vecMdt.size(); ++hit_iter)
568  {
569  PndMdtHit* mdtHit = (PndMdtHit*) fHitArray->At(vecMdt[hit_iter]);
570  mdtHit->Position(newPos);
571  Float_t hitDist = (oldPos-newPos).Mag2();
572  deltaAngle = direction.Angle(newPos-oldPos); //lyt
573  direction = newPos-oldPos; //lyt
574  if ( (corrDist<0.) || (corrDist > hitDist) ) // find closes hit
575  {
576  corrDist = hitDist;
577  corrId = vecMdt[hit_iter];
578  corrPos = newPos;
579  }
580  if ( (hitDist>0.) && ((TMath::Sqrt(hitDist)/layerDist) < 2.5) ) layerMult++;
581  }
582 
583  if ( (corrDist>0.) && ((TMath::Sqrt(corrDist)/layerDist) < 2.5) ) // if there in one correlated hit closer than 2.5 later distance
584  {
585 
586  mdtTrk->SetHitIndex(layerCount, corrId);
587  mdtTrk->SetHitDist(layerCount, corrDist);
588  mdtTrk->SetHitDeltaAngle(layerCount, deltaAngle); //lyt
589  mdtTrk->SetLayerDist(layerCount, layerDist);
590  mdtTrk->SetHitMult(layerCount, layerMult);
591  layerCount++;
592  maxLayer = (*layer_iter).first;
593  oldPos = corrPos; // reset position for next mdt layer
594  }
595 
596  } // end of layer loop
597 
598  mdtTrk->SetMaxLayer(maxLayer);
599  mdtTrk->SetLayerCount(layerCount);
600  AddTrk(mdtTrk); // storing the PndMdtTrk object
601  delete(mdtTrk);
602  } // end of layer0 loop
603  } // end of Forward block
604 }
void SetHitDist(Int_t lay, Float_t dist)
Definition: PndMdtTrk.h:114
map< Int_t, vector< Int_t > > mapMdtBarrel
Float_t mdtLayerPos[3][20]
static T Sqrt(const T &x)
Definition: PndCAMath.h:37
TClonesArray * fTrkArray
void SetLayerDist(Int_t lay, Float_t dist)
Definition: PndMdtTrk.h:138
void SetHitDeltaAngle(Int_t lay, Float_t angle)
Definition: PndMdtTrk.h:126
void SetMaxLayer(Int_t lay)
Definition: PndMdtTrk.h:64
virtual void AlgorithmWithLheGenTrack()
void SetHitIndex(Int_t lay, Int_t trackId)
Definition: PndMdtTrk.h:88
map< Int_t, vector< Int_t > > mapMdtForward
void SetIronDist(Float_t dist)
Definition: PndMdtTrk.h:61
void SetModule(Int_t mod)
Definition: PndMdtTrk.h:66
map< Int_t, vector< Int_t > > mapMdtEndcap
Float_t mdtIronThickness[3][20]
map< Int_t, Float_t > mapHitDistance
void SetHitMult(Int_t lay, Int_t mult)
Definition: PndMdtTrk.h:102
TClonesArray * fHitArray
PndMdtTrk * AddTrk(PndMdtTrk *track)
void SetLayerCount(Int_t lay)
Definition: PndMdtTrk.h:63
map< Int_t, TVector3 > mapHitDirection
Bool_t PndPersistencyTask::GetPersistency ( )
inlineinherited

Definition at line 32 of file PndPersistencyTask.h.

References PndPersistencyTask::fPersistency.

Referenced by PndLmdPixelHitProducerFast::GetPersistance(), PndMdtDigitization::Init(), PndMdtHitProducerIdeal::Init(), PndMdtClusterTask::Init(), PndFtsHitProducerRealFast::Init(), PndSttHitProducerRealFast::Init(), PndDiscTaskReconstruction::Init(), PndRichHitProducer::Init(), PndSttHelixHitProducer::Init(), PndDiscTaskPID::Init(), PndIdealTrackFinder::Init(), PndSttMvdGemTracking::Init(), Init(), PndFtsHitProducerRealFull::Init(), PndLmdPixelClusterTask::Init(), PndSttHitProducerRealFull::Init(), PndLmdStripClusterTask::Init(), PndEmcApdHitProducer::Init(), PndMissingPzCleanerTask::Init(), PndEmcMakeRecoHit::Init(), PndEmcMakeClusterOnline::Init(), PndTrackSmearTask::Init(), PndEmcFWEndcapTimebasedWaveforms::Init(), PndSttHitProducerIdeal::Init(), PndEmcFWEndcapDigi::Init(), PndFtsHitProducerIdeal::Init(), PndEmcMakeCluster::Init(), PndMdtPointsToWaveform::Init(), PndDiscTaskDigitization::Init(), PndEmcMakeDigi::Init(), PndSdsTimeWalkCorrTask::Init(), PndLmdPixelHitProducerFast::Init(), PndDrcHitFinder::Init(), PndRichHitFinder::Init(), PndEmcMakeCorr::Init(), PndFtofHitProducerIdeal::Init(), PndEmcHitsToWaveform::Init(), PndSciTDigiTask::Init(), PndDrcHitProducerIdeal::Init(), PndSdsHitProducerIdeal::Init(), PndSciTHitProducerIdeal::Init(), PndEmcHitProducer::Init(), PndRecoMultiKalmanTask2::Init(), PndDrcHitProducerReal::Init(), PndDskFLGHitProducerIdeal::Init(), PndEmcTmpWaveformToDigi::Init(), PndDrcDigiTask::Init(), PndEmcWaveformToDigi::Init(), PndSttMatchTracks::Init(), PndEmcWaveformToCalibratedDigi::Init(), PndTrkTracking2::Init(), PndSttFindTracks::Init(), PndEmcMultiWaveformToCalibratedDigi::Init(), PndDrcTimeDigiTask::Init(), PndRecoKalmanTask2::Init(), PndEmcExpClusterSplitter::Init(), PndSdsNoiseProducer::Init(), PndFtsHoughTrackerTask::Init(), PndEmcPhiBumpSplitter::Init(), PndSdsHybridHitProducer::Init(), PndSdsIdealRecoTask::Init(), PndRecoMultiKalmanTask::Init(), PndSdsIdealClusterTask::Init(), PndRecoKalmanTask::Init(), PndSdsStripHitProducerDif::Init(), PndSdsStripHitProducer::Init(), PndGemDigitize::Init(), PndGemFindHits::Init(), PndSdsPixelClusterTask::Init(), PndSdsStripClusterTask::Init(), PndMvdGemTrackFinderOnHits::Init(), PndBarrelTrackFinder::Init(), PndEmcFullDigiTask::PndEmcFullDigiTask(), PndEmcMakeBump::PndEmcMakeBump(), PndUnassignedHitsTask::RegisterBranches(), PndMvdClusterTask::SetPersistance(), PndMvdDigiTask::SetPersistance(), PndEmcMakeBump::SetStorageOfData(), and PndEmcFullDigiTask::StoreDigi().

32 { return fPersistency; }
InitStatus PndMdtTrkProducer::Init ( )
virtual

Virtual method Init

Definition at line 48 of file PndMdtTrkProducer.cxx.

References fHitArray, fLheGenTrack, fRec_method, fTrkArray, PndPersistencyTask::GetPersistency(), and SetGeometry().

48  {
49  cout << "-I- PndMdtTrkProducer::Init: "
50  << "INITIALIZATION *********************" << endl;
51 
52  //FairRun* sim = FairRun::Instance(); //[R.K. 01/2017] unused variable?
53  //FairRuntimeDb* rtdb=sim->GetRuntimeDb(); //[R.K. 01/2017] unused variable?
54 
55  // Get RootManager
56  FairRootManager* ioman = FairRootManager::Instance();
57  if ( ! ioman ) {
58  cout << "-E- PndMdtTrkProducer::Init: "
59  << "RootManager not instantiated!" << endl;
60  return kFATAL;
61  }
62 
63  fHitArray = (TClonesArray*) ioman->GetObject("MdtHit");
64  if ( ! fHitArray ) {
65  cout << "-W- PndMdtTrkProducer::Init: "
66  << "No MdtHit array!" << endl;
67  return kERROR;
68  }
69 
70  if (fRec_method==1)
71  {
72  fLheGenTrack = (TClonesArray*) ioman->GetObject("LheGenTrack");
73  if ( ! fLheGenTrack ){
74  cout << "-W- PndMdtTrkProducer::Init: "
75  << "No LheGenTrack array!" << endl;
76  //return kERROR;
77  }
78  }
79 
80  // Create and register output array
81  fTrkArray = new TClonesArray("PndMdtTrk");
82 
83  SetGeometry();
84 
85  ioman->Register("MdtTrk","Mdt",fTrkArray,GetPersistency());
86 
87  cout << "-I- PndMdtTrkProducer: Intialization successfull" << endl;
88 
89  return kSUCCESS;
90 
91 }
TClonesArray * fTrkArray
TClonesArray * fHitArray
TClonesArray * fLheGenTrack
Bool_t PndMdtTrkProducer::MdtMapping ( )
private

Definition at line 607 of file PndMdtTrkProducer.cxx.

References fHitArray, PndMdtHit::GetLayerID(), PndMdtHit::GetModule(), mapMdtBarrel, mapMdtEndcap, mapMdtForward, nHits, and Reset().

Referenced by Exec().

608 {
609  Int_t nHits = fHitArray->GetEntriesFast();
610  if (nHits==0) return kFALSE;
611 
612  Reset();
613  PndMdtHit *mdtHit = NULL;
614  for (Int_t iHit=0; iHit<nHits; iHit++)
615  {
616  mdtHit = (PndMdtHit*) fHitArray->At(iHit);
617  Int_t mdtLayer = -1; //mdtModule = -1, //[R.K. 01/2017] unused variable
618 
619  switch (mdtHit->GetModule())
620  {
621  case 1:
622  //mdtModule = 1; //[R.K. 01/2017] unused variable
623  mdtLayer = mdtHit->GetLayerID();
624  mapMdtBarrel[mdtLayer].push_back(iHit);
625  break;
626 
627  case 2:
628  //mdtModule = 2; //[R.K. 01/2017] unused variable
629  mdtLayer = mdtHit->GetLayerID();
630  mapMdtEndcap[mdtLayer].push_back(iHit);
631  break;
632 
633  case 3:
634  //mdtModule = 2; //[R.K. 01/2017] unused variable
635  mdtLayer = mdtHit->GetLayerID()+5;
636  mapMdtEndcap[mdtLayer].push_back(iHit);
637  break;
638 
639  case 4:
640  //mdtModule = 3; //[R.K. 01/2017] unused variable
641  mdtLayer = mdtHit->GetLayerID();
642  mapMdtForward[mdtLayer].push_back(iHit);
643  break;
644 
645  default:
646  cout << "-E- PndMdtTrkProducer::Init: Wrong MDT Module" << endl;
647  return kFALSE;
648  }
649  }
650 
651  return kTRUE;
652 }
Short_t GetLayerID() const
Definition: PndMdtHit.h:34
map< Int_t, vector< Int_t > > mapMdtBarrel
int nHits
Definition: RiemannTest.C:16
map< Int_t, vector< Int_t > > mapMdtForward
map< Int_t, vector< Int_t > > mapMdtEndcap
Short_t GetModule() const
Definition: PndMdtHit.h:32
TClonesArray * fHitArray
void PndMdtTrkProducer::Reset ( )
private

Definition at line 675 of file PndMdtTrkProducer.cxx.

References mapHitDirection, mapMdtBarrel, mapMdtEndcap, and mapMdtForward.

Referenced by MdtMapping(), and PndMdtTrkProducer().

675  {
676  // reset maps
677  mapMdtBarrel.clear();
678  mapMdtEndcap.clear();
679  mapMdtForward.clear();
680  mapHitDirection.clear();
681 }
map< Int_t, vector< Int_t > > mapMdtBarrel
map< Int_t, vector< Int_t > > mapMdtForward
map< Int_t, vector< Int_t > > mapMdtEndcap
map< Int_t, TVector3 > mapHitDirection
void PndMdtTrkProducer::SetGeometry ( )
private

Definition at line 110 of file PndMdtTrkProducer.cxx.

References Double_t, fVerbose, gGeoManager, mdtIronThickness, mdtLayerPos, mdtModule1MaxZ, mm, and v.

Referenced by Init().

110  {
111  // Resetting geoemtry parameters
112  for (Int_t mm=0; mm<3; mm++)
113  for (Int_t ll=0; ll<20;ll++)
114  {
115  mdtLayerPos[mm][ll] = -1;
116  mdtIronThickness[mm][ll] = -1;
117  }
118  mdtModule1MaxZ = -1;
119 
120  // Thichness of barrel iron layers [cm]
121  mdtIronThickness[0][0] = 6.;
122  for (Int_t ll=1; ll<12;ll++) mdtIronThickness[0][ll] = 3;
123  mdtIronThickness[0][12] = 6.;
124  // Thichness of endcap+mf iron layers [cm]
125  for (Int_t ll=0; ll<10;ll++) mdtIronThickness[1][ll] = 6;
126 
127  Short_t version = 0;
128  Text_t buffer[50];
129  Text_t lbuffer[255];
130 
131  // Finding geometry version
132  if (gGeoManager->FindVolumeFast("MdtBarrelLayer00")) version = 1; // fast
133  if (gGeoManager->FindVolumeFast("MdtBarrelOct0")) version = 2; // full
134  if (version==0)
135  {
136  cout << "PndMdtTrkProducer::SetGeometry : Warning - No MDT Barrel Geometry" << endl;
137  }
138  else
139  {
140  for (Int_t ll=0; ll<15; ll++)
141  {
142  mdtLayerPos[0][ll] = -1;
143  Int_t sec = 0, box = 0;
144  sprintf(buffer,"MDT%is%il%ib%iw%i", 1, sec, ll, box, 0);
145  TGeoVolume *v = gGeoManager->FindVolumeFast(buffer);
146  if (v)
147  {
148  if (version==1)
149  {
150  sec = 0;
151  sprintf(buffer,"MDT%is%il%ib%iw%i", 1, sec, ll, box, 0);
152  if (ll<10)
153  sprintf(lbuffer,"cave_1/Mdt_1/MdtBarrel_1/MdtBarrelLayer0%i_1/%s_%i",ll,buffer,8*ll);
154  else
155  sprintf(lbuffer,"cave_1/Mdt_1/MdtBarrel_1/MdtBarrelLayer%i_1/%s_%i",ll,buffer,8*ll);
156  }
157  if (version==2)
158  {
159  sec = 2; box = 6;
160  sprintf(buffer,"MDT%is%il%ib%iw%i", 1, sec, ll, box, 0);
161  if (ll<10)
162  sprintf(lbuffer,"cave_1/MdtBarrel_0/MdtBarrelOct%i_%i/MdtBarrelOct%iLayer0%i_0/BP1%i%i%i0_%i/BA1%i%i%i0_%i/%s_0",sec,sec,sec,ll,sec,ll,box,box,sec,ll,box,box,buffer);
163  else
164  sprintf(lbuffer,"cave_1/MdtBarrel_0/MdtBarrelOct%i_%i/MdtBarrelOct%iLayer%i_0/BP1%i%i%i0_%i/BA1%i%i%i0_%i/%s_0",sec,sec,sec,ll,sec,ll,box,box,sec,ll,box,box,buffer);
165  }
166 
167  gGeoManager->cd(lbuffer);
168  Double_t local[3] = {0., 0., 0.};
169  Double_t master[3];
170  gGeoManager->LocalToMaster(local, master);
171  mdtLayerPos[0][ll] = master[1];
172 
173  // Finding the maximum point of Z
174  if (ll==0)
175  {
176  const Double_t *origin = ((TGeoBBox*)gGeoManager->GetCurrentVolume()->GetShape())->GetOrigin();
177  if (version==1) local[1] = ((TGeoBBox*)gGeoManager->GetCurrentVolume()->GetShape())->GetDY()+origin[1];
178  if (version==2) local[2] = ((TGeoBBox*)gGeoManager->GetCurrentVolume()->GetShape())->GetDZ()+origin[2];
179  gGeoManager->LocalToMaster(local, master);
180  mdtModule1MaxZ = master[2];
181  if (fVerbose>1) cout << "mdtModule1MaxZ = " << mdtModule1MaxZ << ";" << endl;
182  }
183 
184  if (fVerbose>1) cout << "mdtLayerPos[0][" << ll << "] = " << mdtLayerPos[0][ll] << ";" << endl;
185  } // end of recognized volume
186  } // end of layer loop
187  } // end of barrel
188 
189  Int_t ec_laymax = 0;
190  version = 1; // standard fast
191  // Finding geometry version
192  if (gGeoManager->FindVolumeFast("BP20000")) version = 2; // full
193  for (Int_t ll=0; ll<10; ll++)
194  {
195  mdtLayerPos[1][ll] = -1;
196  sprintf(buffer,"MDT%is%il%ib%iw%i", 2, 0, ll, 0, 0);
197  TGeoVolume *v = gGeoManager->FindVolumeFast(buffer);
198  if (v)
199  {
200  if (version==1)
201  {
202  sprintf(lbuffer,"cave_1/Mdt_1/MdtEndcap_1/MdtEndcapLayer0%i_1/%s_%i",ll,buffer,200+8*ll);
203  }
204  if (version==2)
205  {
206  sprintf(lbuffer,"cave_1/MdtEndcap_0/MdtEndcapLayer0%i_0/BP20%i00_0/BA20%i00_0/%s_0",ll,ll,ll,buffer);
207  }
208 
209  gGeoManager->cd(lbuffer);
210  Double_t local[3] = {0., 0., 0.};
211  Double_t master[3];
212  gGeoManager->LocalToMaster(local, master);
213  mdtLayerPos[1][ll] = master[2];
214  if (fVerbose>1) cout << "mdtLayerPos[1][" << ll << "] = " << mdtLayerPos[1][ll] << ";" << endl;
215  ec_laymax++;
216  } // end of recognized volume
217  } // end of layer loop
218 
219  // Muon Filter
220  version = 1; // standard fast
221  // Finding geometry version
222  if (gGeoManager->FindVolumeFast("MF")) version = 2; // Dubna
223  for (Int_t ll=0; ll<10; ll++)
224  {
225  mdtLayerPos[1][ll+ec_laymax] = -1;
226  sprintf(buffer,"MDT%is%il%ib%iw%i", 3, 0, ll, 0, 0);
227  TGeoVolume *v = gGeoManager->FindVolumeFast(buffer);
228  if (v)
229  {
230  if (version==1)
231  {
232  sprintf(lbuffer,"cave_1/Mdt_1/MdtMuonFilter_1/MdtMuonFilterLayer0%i_1/%s_%i",ll,buffer,300+8*ll);
233  }
234  if (version==2)
235  {
236  sprintf(lbuffer,"cave_1/MF_0/MdtMFLayer0%i_0/BP30%i00_0/BA30%i00_0/%s_0",ll,ll,ll,buffer);
237  }
238 
239  gGeoManager->cd(lbuffer);
240  Double_t local[3] = {0., 0., 0.};
241  Double_t master[3];
242  gGeoManager->LocalToMaster(local, master);
243  mdtLayerPos[1][ll+ec_laymax] = master[2];
244  if (fVerbose>1) cout << "mdtLayerPos[1][" << ll+ec_laymax << "] = " << mdtLayerPos[1][ll+ec_laymax] << ";" << endl;
245  } // end of recognized volume
246  } // end of layer loop
247 
248 
249  // Forward
250  version = 1;
251  // Finding geometry version
252  //if (gGeoManager->FindVolumeFast("Forward")) version = 2; // Dubna not existing right now
253  for (Int_t ll=0; ll<17; ll++)
254  {
255  mdtLayerPos[2][ll] = -1;
256  sprintf(buffer,"MDT%is%il%ib%iw%i", 4, 0, ll, 0, 0);
257  TGeoVolume *v = gGeoManager->FindVolumeFast(buffer);
258  if (v)
259  {
260  if (version==1)
261  {
262  sprintf(lbuffer,"cave_1/Mdt_1/MdtForward_1/%s_%i",buffer,ll);
263  }
264  if (version==2)
265  {
266  if (ll<10)
267  sprintf(lbuffer,"cave_1/Forward_0/MdtForwardLayer0%i_0/BP40%i00_%i/BA40%i00_0/%s_0",ll,ll,ll,ll,buffer);
268  else
269  sprintf(lbuffer,"cave_1/Forward_0/MdtForwardLayer%i_0/BP40%i00_%i/BA40%i00_0/%s_0",ll,ll,ll,ll,buffer);
270 
271  }
272 
273  gGeoManager->cd(lbuffer);
274  Double_t local[3] = {0., 0., 0.};
275  Double_t master[3];
276  gGeoManager->LocalToMaster(local, master);
277  mdtLayerPos[2][ll] = master[2];
278  if (fVerbose>1) cout << "mdtLayerPos[2][" << ll << "] = " << mdtLayerPos[2][ll] << ";" << endl;
279  } // end of recognized volume
280  } // end of layer loop
281 
282 }
int fVerbose
Definition: poormantracks.C:24
Float_t mdtLayerPos[3][20]
TGeoManager * gGeoManager
__m128 v
Definition: P4_F32vec4.h:4
Double_t
Float_t mdtIronThickness[3][20]
Double_t const mm
void PndMdtTrkProducer::SetParContainers ( )
virtual

Definition at line 95 of file PndMdtTrkProducer.cxx.

References run.

95  {
96 
97  // Get run and runtime database
98  FairRun* run = FairRun::Instance();
99  if ( ! run ) Fatal("PndMdtTrkProducer:: SetParContainers", "No analysis run");
100 
101  FairRuntimeDb* db = run->GetRuntimeDb();
102  if ( ! db ) Fatal("PndMdtTrkProducer:: SetParContainers", "No runtime database");
103 
104  // Get Mdt Reconstruction parameter container
105  //fRecoPar = (PndMdtRecoPar*) db->getContainer("PndMdtRecoPar");
106 
107 }
Int_t run
Definition: autocutx.C:47
void PndPersistencyTask::SetPersistency ( Bool_t  val = kTRUE)
inlineinherited

Definition at line 31 of file PndPersistencyTask.h.

References PndPersistencyTask::fPersistency, and val.

Referenced by barrelTrackFinder(), digi_complete(), digi_complete_newSTT(), digiOnly_complete(), PndBarrelTrackFinder::PndBarrelTrackFinder(), PndCATracking::PndCATracking(), PndDrcHitFinder::PndDrcHitFinder(), PndEmc2DLocMaxFinder::PndEmc2DLocMaxFinder(), PndEmcExpClusterSplitter::PndEmcExpClusterSplitter(), PndEmcFullDigiTask::PndEmcFullDigiTask(), PndEmcFWEndcapDigi::PndEmcFWEndcapDigi(), PndEmcFWEndcapTimebasedWaveforms::PndEmcFWEndcapTimebasedWaveforms(), PndEmcHitProducer::PndEmcHitProducer(), PndEmcHitsToWaveform::PndEmcHitsToWaveform(), PndEmcMakeBump::PndEmcMakeBump(), PndEmcMakeCluster::PndEmcMakeCluster(), PndEmcMakeClusterOnline::PndEmcMakeClusterOnline(), PndEmcMakeDigi::PndEmcMakeDigi(), PndEmcMakeRecoHit::PndEmcMakeRecoHit(), PndEmcMultiWaveformToCalibratedDigi::PndEmcMultiWaveformToCalibratedDigi(), PndEmcPhiBumpSplitter::PndEmcPhiBumpSplitter(), PndEmcTmpWaveformToDigi::PndEmcTmpWaveformToDigi(), PndEmcWaveformToCalibratedDigi::PndEmcWaveformToCalibratedDigi(), PndEmcWaveformToDigi::PndEmcWaveformToDigi(), PndFtofHitProducerIdeal::PndFtofHitProducerIdeal(), PndFtsCATracking::PndFtsCATracking(), PndFtsHitProducerIdeal::PndFtsHitProducerIdeal(), PndFtsHitProducerRealFast::PndFtsHitProducerRealFast(), PndFtsHitProducerRealFull::PndFtsHitProducerRealFull(), PndFtsHoughTrackerTask::PndFtsHoughTrackerTask(), PndGemDigitize::PndGemDigitize(), PndGemFindHits::PndGemFindHits(), PndIdealTrackFinder::PndIdealTrackFinder(), PndLmdPixelClusterTask::PndLmdPixelClusterTask(), PndLmdPixelHitProducerFast::PndLmdPixelHitProducerFast(), PndMdtClusterTask::PndMdtClusterTask(), PndMdtDigitization::PndMdtDigitization(), PndMdtHitProducerIdeal::PndMdtHitProducerIdeal(), PndMdtPointsToWaveform::PndMdtPointsToWaveform(), PndMdtTrkProducer(), PndMissingPzCleanerTask::PndMissingPzCleanerTask(), PndMvdGemTrackFinderOnHits::PndMvdGemTrackFinderOnHits(), PndMvdHitProducerIdeal::PndMvdHitProducerIdeal(), PndMvdPixelClusterTask::PndMvdPixelClusterTask(), PndMvdTimeWalkCorrTask::PndMvdTimeWalkCorrTask(), PndMvdToPix4ClusterTask::PndMvdToPix4ClusterTask(), PndRecoKalmanTask::PndRecoKalmanTask(), PndRecoKalmanTask2::PndRecoKalmanTask2(), PndRecoMultiKalmanTask::PndRecoMultiKalmanTask(), PndRecoMultiKalmanTask2::PndRecoMultiKalmanTask2(), PndRichHitFinder::PndRichHitFinder(), PndRichHitProducer::PndRichHitProducer(), PndSciTDigiTask::PndSciTDigiTask(), PndSciTHitProducerIdeal::PndSciTHitProducerIdeal(), PndSdsHitProducerIdeal::PndSdsHitProducerIdeal(), PndSdsHybridHitProducer::PndSdsHybridHitProducer(), PndSdsIdealClusterTask::PndSdsIdealClusterTask(), PndSdsIdealRecoTask::PndSdsIdealRecoTask(), PndSdsNoiseProducer::PndSdsNoiseProducer(), PndSdsPixelClusterTask::PndSdsPixelClusterTask(), PndSdsStripClusterTask::PndSdsStripClusterTask(), PndSdsStripHitProducer::PndSdsStripHitProducer(), PndSdsTimeWalkCorrTask::PndSdsTimeWalkCorrTask(), PndSttFindTracks::PndSttFindTracks(), PndSttHelixHitProducer::PndSttHelixHitProducer(), PndSttHitProducerIdeal::PndSttHitProducerIdeal(), PndSttHitProducerRealFast::PndSttHitProducerRealFast(), PndSttHitProducerRealFull::PndSttHitProducerRealFull(), PndSttMatchTracks::PndSttMatchTracks(), PndSttMvdGemTracking::PndSttMvdGemTracking(), PndTrackSmearTask::PndTrackSmearTask(), PndTrkTracking2::PndTrkTracking2(), reco(), reco_complete(), reco_complete_gf2(), reco_complete_newSTT(), reco_complete_sec(), recoideal_complete(), PndMvdClusterTask::SetPersistance(), PndMvdDigiTask::SetPersistance(), PndLmdPixelHitProducerFast::SetPersistance(), PndSdsHitProducerIdeal::SetPersistance(), PndSttMvdGemTracking::SetPersistenc(), PndMdtClusterTask::SetPersistence(), PndSttHelixHitProducer::SetPersistence(), PndMissingPzCleanerTask::SetPersistence(), PndFtsHitProducerRealFast::SetPersistence(), PndFtsHitProducerRealFull::SetPersistence(), PndSttHitProducerRealFull::SetPersistence(), PndSttHitProducerIdeal::SetPersistence(), PndSttHitProducerRealFast::SetPersistence(), PndFtsHitProducerIdeal::SetPersistence(), PndTrackSmearTask::SetPersistence(), PndSciTHitProducerIdeal::SetPersistence(), PndIdealTrackFinder::SetPersistence(), PndSttMatchTracks::SetPersistence(), PndSttFindTracks::SetPersistence(), PndFtsHoughTrackerTask::SetPersistence(), PndTrkTracking2::SetPersistence(), PndEmcMakeRecoHit::SetStorageOfData(), PndEmcFWEndcapDigi::SetStorageOfData(), PndEmcMakeClusterOnline::SetStorageOfData(), PndEmcFWEndcapTimebasedWaveforms::SetStorageOfData(), PndEmcMakeDigi::SetStorageOfData(), PndMdtPointsToWaveform::SetStorageOfData(), PndEmc2DLocMaxFinder::SetStorageOfData(), PndEmcMakeCluster::SetStorageOfData(), PndEmcHitsToWaveform::SetStorageOfData(), PndEmcMakeBump::SetStorageOfData(), PndEmcTmpWaveformToDigi::SetStorageOfData(), PndEmcWaveformToDigi::SetStorageOfData(), PndEmcWaveformToCalibratedDigi::SetStorageOfData(), PndEmcMultiWaveformToCalibratedDigi::SetStorageOfData(), PndEmcExpClusterSplitter::SetStorageOfData(), PndEmcPhiBumpSplitter::SetStorageOfData(), standard_tracking(), and PndEmcFullDigiTask::StoreDigi().

31 { fPersistency = val; }
Double_t val[nBoxes][nFEBox]
Definition: createCalib.C:11
void PndMdtTrkProducer::SetRecMethod ( Int_t  rec_method)
inline

Definition at line 43 of file PndMdtTrkProducer.h.

References fRec_method.

43 {fRec_method = rec_method;}

Member Data Documentation

TClonesArray* PndMdtTrkProducer::fHitArray
private

Input array of PndMdtHit

Definition at line 57 of file PndMdtTrkProducer.h.

Referenced by AlgorithmWithLheGenTrack(), Exec(), Init(), and MdtMapping().

TClonesArray* PndMdtTrkProducer::fLheGenTrack
private

Input array of LheGenTrack

Definition at line 60 of file PndMdtTrkProducer.h.

Referenced by AlgorithmWithLheGenTrack(), and Init().

Int_t PndMdtTrkProducer::fRec_method
private

Definition at line 48 of file PndMdtTrkProducer.h.

Referenced by Exec(), Init(), PndMdtTrkProducer(), and SetRecMethod().

TClonesArray* PndMdtTrkProducer::fTrkArray
private

Output array of PndMdtTrk

Definition at line 63 of file PndMdtTrkProducer.h.

Referenced by AddTrk(), Exec(), and Init().

map<Int_t, TVector3> PndMdtTrkProducer::mapHitDirection
private

Definition at line 71 of file PndMdtTrkProducer.h.

Referenced by AlgorithmWithLheGenTrack(), Exec(), and Reset().

map<Int_t, Float_t> PndMdtTrkProducer::mapHitDistance
private

Definition at line 72 of file PndMdtTrkProducer.h.

Referenced by AlgorithmWithLheGenTrack(), and Exec().

map<Int_t, vector<Int_t> > PndMdtTrkProducer::mapMdtBarrel
private

Definition at line 67 of file PndMdtTrkProducer.h.

Referenced by Exec(), MdtMapping(), and Reset().

map<Int_t, vector<Int_t> > PndMdtTrkProducer::mapMdtEndcap
private

Definition at line 68 of file PndMdtTrkProducer.h.

Referenced by Exec(), MdtMapping(), and Reset().

map<Int_t, vector<Int_t> > PndMdtTrkProducer::mapMdtForward
private

Definition at line 69 of file PndMdtTrkProducer.h.

Referenced by Exec(), MdtMapping(), and Reset().

Float_t PndMdtTrkProducer::mdtIronThickness[3][20]
private

Definition at line 74 of file PndMdtTrkProducer.h.

Referenced by Exec(), and SetGeometry().

Float_t PndMdtTrkProducer::mdtLayerPos[3][20]
private

Definition at line 73 of file PndMdtTrkProducer.h.

Referenced by Exec(), and SetGeometry().

Float_t PndMdtTrkProducer::mdtModule1MaxZ
private

Definition at line 75 of file PndMdtTrkProducer.h.

Referenced by Exec(), and SetGeometry().


The documentation for this class was generated from the following files: