4 #include "TClonesArray.h" 
    5 #include "FairRootManager.h" 
    6 #include "FairGeaneTrT.h" 
    7 #include "TGeant3TGeo.h" 
   12 #include "TDatabasePDG.h" 
   17 #include "FairRunAna.h" 
   19 #include "FairTrackParH.h" 
   20 #include "FairTrackParP.h" 
   46   FairRootManager* ioman = FairRootManager::Instance();
 
   48     cout << 
"-E- FairGeaneTrT::Init: " 
   49          << 
"RootManager not instantised!" << endl;
 
   63   ioman->Register(
"GeaneTrackIni",
"Geane", 
fTrackParIni, kTRUE);
 
   69   fHitArray = (TClonesArray*) ioman->GetObject(
"STTHit");
 
   70   if (!
fHitArray)   cout << 
"-W- FairGeaneTrT::Init: No Hit array!" << endl;
 
   72   fPointArray = (TClonesArray*) ioman->GetObject(
"STTPoint");
 
   73   if (!
fPointArray) cout << 
"-W- FairGeaneTrT::Init: No Point array!" << endl;
 
   76   fTrackArray  = (TClonesArray*) ioman->GetObject(
"STTTrack"); 
 
   78     cout << 
"-E- FairGeaneTrT::Init: No SttTrack array!" << endl;
 
   82   fPro = 
new FairGeanePro();
 
   83   fUtil = 
new FairGeaneUtil();
 
  104    for (Int_t iTrack = 0; iTrack < nTracks; iTrack++) 
 
  108        if(!pTrack) 
continue;
 
  109        if(pTrack->
GetFlag() < 3) 
continue; 
 
  112        Int_t iHit1 = pTrack->GetHitIndex(0);
 
  114        if(!currenthit1) 
continue;
 
  115        if(currenthit1->GetXint() == -999 || currenthit1->GetYint() == -999) 
continue;
 
  116        Int_t refindex1 = currenthit1->GetRefIndex(); 
 
  122        TVector3 StartPosErr = TVector3(0,0,0);
 
  123        TVector3 StartMom    = TVector3 (fPoint1->GetPXtot(),fPoint1->GetPYtot(),fPoint1->GetPZtot());
 
  125        TVector3 StartMomErr = TVector3(0,0,0);
 
  149        Int_t hitcounter = pTrack->GetNofHits();
 
  150        Int_t iHit = pTrack->GetHitIndex(hitcounter - 1);
 
  152        if(!currenthit) 
continue;
 
  153        if(currenthit->GetXint() == -999 || currenthit->GetYint() == -999) 
continue;
 
  154        Int_t refindex = currenthit->GetRefIndex(); 
 
  164        TVector3 EndPosErr   = TVector3(0,0,0);
 
  165        TVector3 EndMom      = TVector3(iPoint->GetPXtot(), iPoint->GetPYtot(), iPoint->GetPZtot());
 
  166        TVector3 EndMomErr   = TVector3(0,0,0);
 
  169        TDatabasePDG *fdbPDG= TDatabasePDG::Instance();
 
  170        TParticlePDG *
fParticle= fdbPDG->GetParticle(PDGCode);
 
  171        Double_t  fCharge= fParticle->Charge();
 
  174        Int_t size1 = clref1.GetEntriesFast();
 
  176        FairTrackParP *fStart = 
new (clref1[size1]) FairTrackParP(StartPos, StartMom, StartPosErr, StartMomErr, fCharge, TVector3(0.,0.,0.), TVector3(0.,1.,0.), TVector3(0.,0.,1.));
 
  179        Int_t size = clref.GetEntriesFast();
 
  180        FairTrackParP *fRes = 
new(clref[size]) FairTrackParP();
 
  183        Int_t size2 = clref2.GetEntriesFast();
 
  184        FairTrackParP *fFinal = 
new(clref2[size2]) FairTrackParP();
 
  185        FairTrackParH *fFinalH = 
new FairTrackParH(EndPos, EndMom, EndPosErr, EndMomErr, fCharge);
 
  188        TVector3 v0 = TVector3(0, 0, 0);
 
  191        TVector3 center = TVector3(currenthit->GetX(), currenthit->GetY(), currenthit->GetZ());
 
  192        TVector3 wiredir = currenthit->GetWireDirection();
 
  194        TVector3 second = center + wiredir;
 
  195        TVector3 first = center - wiredir;
 
  197        fPro->SetWire(first, second);
 
  198        fPro->PropagateToVirtualPlaneAtPCA(2);   
 
  200        Bool_t rc = 
fPro->Propagate(fStart, fRes, PDGCode); 
 
  203          Double_t PD[3], RD[15], H[3], CH, SPU, DJ[3], DK[3], PC[3], RC[15];
 
  206          PC[0] = fFinalH->GetQp()/fFinalH->GetQ();
 
  207          PC[1] = fFinalH->GetLambda();
 
  208          PC[2] = fFinalH->GetPhi();
 
  212          H[0] = 0; H[1] = 0; H[2] = 20;
 
  215          DJ[0] = fRes->GetJVer().X();
 
  216          DJ[1] = fRes->GetJVer().Y();
 
  217          DJ[2] = fRes->GetJVer().Z();
 
  218          DK[0] = fRes->GetKVer().X();
 
  219          DK[1] = fRes->GetKVer().Y();
 
  220          DK[2] = fRes->GetKVer().Z();
 
  222          fUtil->FromSCToSD(PC, RC, H, CH, DJ, DK, IERR, SPU, PD, RD);
 
  224          TVector3 positionsd = 
fUtil->FromMARSToSDCoord(TVector3(fFinalH->GetX(), fFinalH->GetY(), fFinalH->GetZ()), fRes->GetOrigin(), fRes->GetIVer(), fRes->GetJVer(), fRes->GetKVer());
 
  229          fFinal->SetTrackPar(v, w, PD[1], PD[2], CH*PD[0], RD,
 
  230          fRes->GetOrigin(), fRes->GetIVer(), fRes->GetJVer(),
 
  231          fRes->GetKVer(),SPU);
 
TClonesArray * fTrackParFinal
static T Sqrt(const T &x)
Double_t GetXInLocal() const 
Double_t GetYInLocal() const 
TClonesArray * fPointArray
virtual void Exec(Option_t *opt)
TClonesArray * fTrackParIni
virtual InitStatus Init()
TClonesArray * fTrackParGeane
TClonesArray * fTrackArray