+ if (fIsRefTrack || fIsESDTrack) delete fTrack;
+ if (fIsMCTrack) delete fPart;
+
+}
+
+//______________________________________________________________________
+void MUONTrack::PrintMCTrackInfo()
+{
+ //
+ // information about the MC particle
+ //
+
+ Float_t pt, p;
+
+ if (!fPart) {
+ cout << " ! no particle ..." << endl;
+ return;
+ }
+
+ cout << endl;
+ cout << " MC track parameters at vertex" << endl;
+ cout << " -------------------------------------------------------------------------------------" << endl;
+ cout << " PDG code Vx Vy Vz Px Py Pz " << endl;
+
+ cout << " " <<
+ setw(8) << setprecision(0) <<
+ fPart->GetPdgCode() << " " <<
+ setw(8) << setprecision(3) <<
+ fPart->Vx() << " " <<
+ setw(8) << setprecision(3) <<
+ fPart->Vy() << " " <<
+ setw(8) << setprecision(3) <<
+ fPart->Vz() << " " <<
+ setw(8) << setprecision(3) <<
+ fPart->Px() << " " <<
+ setw(8) << setprecision(3) <<
+ fPart->Py() << " " <<
+ setw(8) << setprecision(4) <<
+ fPart->Pz() << " " <<
+
+ endl;
+
+ pt = TMath::Sqrt(fPart->Px()*fPart->Px()+fPart->Py()*fPart->Py());
+ p = TMath::Sqrt(fPart->Px()*fPart->Px()+fPart->Py()*fPart->Py()+fPart->Pz()*fPart->Pz());
+
+ cout << endl;
+ cout << " Pt = " <<
+ setw(8) << setprecision(3) <<
+ pt << " GeV/c" << endl;
+
+ cout << " P = " <<
+ setw(8) << setprecision(4) <<
+ p << " GeV/c" << endl;
+
+}
+
+//______________________________________________________________________
+void MUONTrack::PrintMUONTrackInfo()
+{
+ //
+ // information about the reconstructed/reference track; at hits and at vertex
+ //
+
+ Double_t RADDEG = 180.0/TMath::Pi();
+
+ Int_t nparam;
+ Float_t pt, bc, nbc, zc;
+ AliMUONTrackParam *mtp;
+ TClonesArray *trackParamAtHit;
+
+ if (!fTrack) {
+ cout << " ! no reconstructed track ..." << endl;
+ return;
+ }
+
+ if (fIsMUONTrack) {
+ cout << endl;
+ cout << " Track number " << fLabel << endl;
+ cout << " ---------------------------------------------------------------------------------------------------------------------------------" << endl;
+ cout << endl;
+ cout << " Number of clusters " << fTrack->GetNTrackHits() << endl;
+ cout << " Match to trigger " << fTrack->GetMatchTrigger() << endl;
+ if (fTrack->GetMatchTrigger()) {
+ cout << " Chi2 tracking-trigger " << fTrack->GetChi2MatchTrigger() << endl;
+ cout << " Local trigger number " << fTrack->GetLoTrgNum() << endl;
+ }
+ }
+
+ if (fIsRefTrack) {
+ cout << endl;
+ cout << " Track reference number " << fLabel << endl;
+ cout << " ---------------------------------------------------------------------------------------------------------------------------------" << endl;
+ cout << endl;
+ cout << " Number of clusters " << fTrack->GetNTrackHits() << endl;
+ }
+
+ trackParamAtHit = fTrack->GetTrackParamAtHit();
+ nparam = trackParamAtHit->GetEntries();
+
+ cout << endl;
+ cout << " TrackParamAtHit entries " << nparam << "" << endl;
+ cout << " ---------------------------------------------------------------------------------------------------------------------------------" << endl;
+ cout << " Number InvBendMom BendSlope NonBendSlope BendCoord NonBendCoord Z Px Py Pz P" << endl;
+
+ for (Int_t i = 0; i < nparam; i++) {
+
+ mtp = (AliMUONTrackParam*)trackParamAtHit->At(i);
+
+ cout <<
+ setw(9)<< setprecision(3) <<
+ i << " " <<
+
+ setw(8) << setprecision(3) <<
+ mtp->GetInverseBendingMomentum() << " " <<
+
+ setw(8) << setprecision(3) <<
+ mtp->GetBendingSlope()*RADDEG << " " <<
+
+ setw(8) << setprecision(3) <<
+ mtp->GetNonBendingSlope()*RADDEG << " " <<
+
+ setw(8) << setprecision(4) <<
+ mtp->GetBendingCoor() << " " <<
+
+ setw(8) << setprecision(4) <<
+ mtp->GetNonBendingCoor() << " " <<
+
+ setw(10) << setprecision(6) <<
+ mtp->GetZ() << " " <<
+
+ setw(8) << setprecision(4) <<
+ mtp->Px() << " " <<
+
+ setw(8) << setprecision(4) <<
+ mtp->Py() << " " <<
+
+ setw(8) << setprecision(4) <<
+ mtp->Pz() << " " <<
+
+ setw(8) << setprecision(4) <<
+ mtp->P() << " " <<
+
+ endl;
+
+ }
+
+ cout << endl;
+ cout << " Track parameters at vertex" << endl;
+ cout << " --------------------------------------------------------------------------------------------------------------------" << endl;
+ cout << " InvBendMom BendSlope NonBendSlope BendCoord NonBendCoord Z Px Py Pz P" << endl;
+
+ mtp = (AliMUONTrackParam*)fTrack->GetTrackParamAtVertex();
+
+ bc = mtp->GetBendingCoor();
+ nbc = mtp->GetNonBendingCoor();
+ zc = mtp->GetZ();
+ if (bc < 0.001) bc = 0.0;
+ if (nbc < 0.001) nbc = 0.0;
+ if (zc < 0.001) zc = 0.0;
+
+ cout << " " <<
+ setw(8) << setprecision(3) <<
+ mtp->GetInverseBendingMomentum() << " " <<
+
+ setw(8) << setprecision(3) <<
+ mtp->GetBendingSlope()*RADDEG << " " <<
+
+ setw(8) << setprecision(3) <<
+ mtp->GetNonBendingSlope()*RADDEG << " " <<
+
+ setw(8) << setprecision(4) <<
+ bc << " " <<
+
+ setw(8) << setprecision(4) <<
+ nbc << " " <<
+
+ setw(10) << setprecision(6) <<
+ zc << " " <<
+
+ setw(8) << setprecision(4) <<
+ mtp->Px() << " " <<
+
+ setw(8) << setprecision(4) <<
+ mtp->Py() << " " <<
+
+ setw(8) << setprecision(4) <<
+ mtp->Pz() << " " <<
+
+ setw(8) << setprecision(4) <<
+ mtp->P() << " " <<
+
+ endl;
+
+ pt = TMath::Sqrt(mtp->Px()*mtp->Px()+mtp->Py()*mtp->Py());
+
+ cout << endl;
+ cout << " Pt = " <<
+ setw(8) << setprecision(3) <<
+ pt << " GeV/c" << endl;
+
+}
+
+//______________________________________________________________________
+void MUONTrack::PrintMUONTriggerTrackInfo()
+{
+ //
+ // information about the trigger track
+ //
+
+ // Double_t RADDEG = 180.0/TMath::Pi();
+
+}
+
+//______________________________________________________________________
+void MUONTrack::PrintESDTrackInfo()
+{
+ //
+ // information about the reconstructed ESD track at vertex
+ //
+
+ Double_t RADDEG = 180.0/TMath::Pi();
+ Float_t pt;
+
+ AliMUONTrackParam *mtp = (AliMUONTrackParam*)fTrack->GetTrackParamAtVertex();
+
+ cout << endl;
+ cout << " ESD muon track " << endl;
+ cout << " -----------------------------------------------------------------------------------------------------------" << endl;
+ cout << " InvBendMom BendSlope NonBendSlope BendCoord NonBendCoord Z Px Py Pz" << endl;
+
+ cout << " " <<
+
+ setw(8) << setprecision(4) <<
+ mtp->GetInverseBendingMomentum() << " " <<
+
+ setw(8) << setprecision(3) <<
+ mtp->GetBendingSlope()*RADDEG << " " <<
+
+ setw(8) << setprecision(3) <<
+ mtp->GetNonBendingSlope()*RADDEG << " " <<
+
+ setw(8) << setprecision(4) <<
+ mtp->GetBendingCoor() << " " <<
+
+ setw(8) << setprecision(4) <<
+ mtp->GetNonBendingCoor() << " " <<
+
+ setw(10) << setprecision(6) <<
+ mtp->GetZ() << " " <<
+
+ setw(8) << setprecision(3) <<
+ mtp->Px() << " " <<
+
+ setw(8) << setprecision(3) <<
+ mtp->Py() << " " <<
+
+ setw(8) << setprecision(3) <<
+ mtp->Pz() << " " <<
+
+ endl;
+
+ pt = TMath::Sqrt(mtp->Px()*mtp->Px()+mtp->Py()*mtp->Py());
+
+ cout << endl;
+ cout << " Pt = " <<
+ setw(8) << setprecision(3) <<
+ pt << " GeV/c" << endl;
+
+ cout << " P = " <<
+ setw(8) << setprecision(4) <<
+ mtp->P() << " GeV/c" << endl;
+
+ AliESD* esd = Alieve::Event::AssertESD();
+
+ Double_t spdVertexX = 0;
+ Double_t spdVertexY = 0;
+ Double_t spdVertexZ = 0;
+ Double_t esdVertexX = 0;
+ Double_t esdVertexY = 0;
+ Double_t esdVertexZ = 0;
+
+ AliESDVertex* spdVertex = (AliESDVertex*) esd->GetVertex();
+ if (spdVertex->GetNContributors()) {
+ spdVertexZ = spdVertex->GetZv();
+ spdVertexY = spdVertex->GetYv();
+ spdVertexX = spdVertex->GetXv();
+ }
+
+ AliESDVertex* esdVertex = (AliESDVertex*) esd->GetPrimaryVertex();
+ if (esdVertex->GetNContributors()) {
+ esdVertexZ = esdVertex->GetZv();
+ esdVertexY = esdVertex->GetYv();
+ esdVertexX = esdVertex->GetXv();
+ }
+
+ Float_t t0v = esd->GetT0zVertex();
+
+ cout << endl;
+ cout << endl;
+ cout << "External vertex SPD: " <<
+ setw(3) <<
+ spdVertex->GetNContributors() << " " <<
+ setw(8) << setprecision(3) <<
+ spdVertexX << " " <<
+ spdVertexY << " " <<
+ spdVertexZ << " " << endl;
+ cout << "External vertex ESD: " <<
+ setw(3) <<
+ esdVertex->GetNContributors() << " " <<
+ setw(8) << setprecision(3) <<
+ esdVertexX << " " <<
+ esdVertexY << " " <<
+ esdVertexZ << " " << endl;
+ cout << "External vertex T0: " <<
+ setw(8) << setprecision(3) <<
+ t0v << " " << endl;
+