LCOV - code coverage report
Current view: top level - STEER/ESD - AliESDMuonGlobalTrack.cxx (source / functions) Hit Total Coverage
Test: coverage.info Lines: 35 169 20.7 %
Date: 2016-06-14 17:26:59 Functions: 3 12 25.0 %

          Line data    Source code
       1             : /**************************************************************************
       2             :  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       3             :  *                                                                        *
       4             :  * Author: The ALICE Off-line Project.                                    *
       5             :  * Contributors are mentioned in the code where appropriate.              *
       6             :  *                                                                        *
       7             :  * Permission to use, copy, modify and distribute this software and its   *
       8             :  * documentation strictly for non-commercial purposes is hereby granted   *
       9             :  * without fee, provided that the above copyright notice appears in all   *
      10             :  * copies and that both the copyright notice and this permission notice   *
      11             :  * appear in the supporting documentation. The authors make no claims     *
      12             :  * about the suitability of this software for any purpose. It is          *
      13             :  * provided "as is" without express or implied warranty.                  *
      14             :  **************************************************************************/
      15             : 
      16             : //====================================================================================================================================================
      17             : //
      18             : //      ESD description of an ALICE muon forward track, combining the information of the Muon Spectrometer and the Muon Forward Tracker
      19             : //
      20             : //      Contact author: antonio.uras@cern.ch
      21             : //
      22             : //====================================================================================================================================================
      23             : 
      24             : #include "AliESDMuonGlobalTrack.h"
      25             : #include "AliESDEvent.h"
      26             : 
      27             : #include "TClonesArray.h"
      28             : #include "TLorentzVector.h"
      29             : #include "TMath.h"
      30             : #include "TDatabasePDG.h"
      31             : 
      32         172 : ClassImp(AliESDMuonGlobalTrack)
      33             : 
      34             : //====================================================================================================================================================
      35             : 
      36             : AliESDMuonGlobalTrack::AliESDMuonGlobalTrack():
      37           4 :   AliVParticle(),
      38           4 :   fCharge(0),
      39           4 :   fMatchTrigger(0),
      40           4 :   fNMFTClusters(0),
      41           4 :   fNWrongMFTClustersMC(-1),
      42           4 :   fMFTClusterPattern(0),
      43           4 :   fPx(0), 
      44           4 :   fPy(0), 
      45           4 :   fPz(0), 
      46           4 :   fPt(0), 
      47           4 :   fP(0), 
      48           4 :   fEta(0), 
      49           4 :   fRapidity(0),
      50           4 :   fFirstTrackingPointX(0),
      51           4 :   fFirstTrackingPointY(0),
      52           4 :   fFirstTrackingPointZ(0),
      53           4 :   fXAtVertex(0),
      54           4 :   fYAtVertex(0),
      55           4 :   fRAtAbsorberEnd(0),
      56           4 :   fCovariances(0),
      57           4 :   fChi2OverNdf(0),
      58           4 :   fChi2MatchTrigger(0),
      59           4 :   fLabel(-1),
      60           4 :   fMuonClusterMap(0),
      61           4 :   fHitsPatternInTrigCh(0),
      62           4 :   fHitsPatternInTrigChTrk(0),
      63           4 :   fLoCircuit(0),
      64           4 :   fIsConnected(kFALSE),
      65           4 :   fESDEvent(0)
      66          20 : {
      67             : 
      68             :   //  Default constructor
      69             : 
      70           4 :   fProdVertexXYZ[0]=0;
      71           4 :   fProdVertexXYZ[1]=0;
      72           4 :   fProdVertexXYZ[2]=0;
      73             : 
      74           8 : }
      75             : 
      76             : //====================================================================================================================================================
      77             : 
      78             : AliESDMuonGlobalTrack::AliESDMuonGlobalTrack(Double_t px, Double_t py, Double_t pz):
      79           0 :   AliVParticle(),
      80           0 :   fCharge(0),
      81           0 :   fMatchTrigger(0),
      82           0 :   fNMFTClusters(0),
      83           0 :   fNWrongMFTClustersMC(-1),
      84           0 :   fMFTClusterPattern(0),
      85           0 :   fPx(0), 
      86           0 :   fPy(0), 
      87           0 :   fPz(0), 
      88           0 :   fPt(0), 
      89           0 :   fP(0), 
      90           0 :   fEta(0), 
      91           0 :   fRapidity(0),
      92           0 :   fFirstTrackingPointX(0),
      93           0 :   fFirstTrackingPointY(0),
      94           0 :   fFirstTrackingPointZ(0),
      95           0 :   fXAtVertex(0),
      96           0 :   fYAtVertex(0),
      97           0 :   fRAtAbsorberEnd(0),
      98           0 :   fCovariances(0),
      99           0 :   fChi2OverNdf(0),
     100           0 :   fChi2MatchTrigger(0),
     101           0 :   fLabel(-1),
     102           0 :   fMuonClusterMap(0),
     103           0 :   fHitsPatternInTrigCh(0),
     104           0 :   fHitsPatternInTrigChTrk(0),
     105           0 :   fLoCircuit(0),
     106           0 :   fIsConnected(kFALSE),
     107           0 :   fESDEvent(0)
     108           0 : {
     109             : 
     110             :   //  Constructor with kinematics
     111             : 
     112           0 :   SetPxPyPz(px, py, pz);
     113             : 
     114           0 :   fProdVertexXYZ[0]=0;
     115           0 :   fProdVertexXYZ[1]=0;
     116           0 :   fProdVertexXYZ[2]=0;
     117             : 
     118           0 : }
     119             : 
     120             : //====================================================================================================================================================
     121             : 
     122             : AliESDMuonGlobalTrack::AliESDMuonGlobalTrack(const AliESDMuonGlobalTrack& muonTrack):
     123           0 :   AliVParticle(muonTrack),
     124           0 :   fCharge(muonTrack.fCharge),
     125           0 :   fMatchTrigger(muonTrack.fMatchTrigger),
     126           0 :   fNMFTClusters(muonTrack.fNMFTClusters),
     127           0 :   fNWrongMFTClustersMC(muonTrack.fNWrongMFTClustersMC),
     128           0 :   fMFTClusterPattern(muonTrack.fMFTClusterPattern),
     129           0 :   fPx(muonTrack.fPx), 
     130           0 :   fPy(muonTrack.fPy), 
     131           0 :   fPz(muonTrack.fPz), 
     132           0 :   fPt(muonTrack.fPt), 
     133           0 :   fP(muonTrack.fP), 
     134           0 :   fEta(muonTrack.fEta), 
     135           0 :   fRapidity(muonTrack.fRapidity),
     136           0 :   fFirstTrackingPointX(muonTrack.fFirstTrackingPointX),
     137           0 :   fFirstTrackingPointY(muonTrack.fFirstTrackingPointY),
     138           0 :   fFirstTrackingPointZ(muonTrack.fFirstTrackingPointZ),
     139           0 :   fXAtVertex(muonTrack.fXAtVertex),
     140           0 :   fYAtVertex(muonTrack.fYAtVertex),
     141           0 :   fRAtAbsorberEnd(muonTrack.fRAtAbsorberEnd),
     142           0 :   fCovariances(0),
     143           0 :   fChi2OverNdf(muonTrack.fChi2OverNdf),
     144           0 :   fChi2MatchTrigger(muonTrack.fChi2MatchTrigger),
     145           0 :   fLabel(muonTrack.fLabel),
     146           0 :   fMuonClusterMap(muonTrack.fMuonClusterMap),
     147           0 :   fHitsPatternInTrigCh(muonTrack.fHitsPatternInTrigCh),
     148           0 :   fHitsPatternInTrigChTrk(muonTrack.fHitsPatternInTrigChTrk),
     149           0 :   fLoCircuit(muonTrack.fLoCircuit),
     150           0 :   fIsConnected(muonTrack.fIsConnected),
     151           0 :   fESDEvent(muonTrack.fESDEvent)
     152           0 : {
     153             : 
     154             :   // Copy constructor
     155             :   
     156           0 :   fProdVertexXYZ[0]=muonTrack.fProdVertexXYZ[0];
     157           0 :   fProdVertexXYZ[1]=muonTrack.fProdVertexXYZ[1];
     158           0 :   fProdVertexXYZ[2]=muonTrack.fProdVertexXYZ[2];
     159             : 
     160           0 :   if (muonTrack.fCovariances) fCovariances = new TMatrixD(*(muonTrack.fCovariances));
     161             : 
     162           0 : }
     163             : 
     164             : //====================================================================================================================================================
     165             : 
     166             : AliESDMuonGlobalTrack& AliESDMuonGlobalTrack::operator=(const AliESDMuonGlobalTrack& muonTrack) {
     167             : 
     168             :   // Assignment operator
     169             : 
     170           0 :   if (this == &muonTrack) return *this;
     171             : 
     172             :   // Base class assignement
     173           0 :   AliVParticle::operator=(muonTrack);
     174             : 
     175           0 :   fCharge                 = muonTrack.fCharge;
     176           0 :   fMatchTrigger           = muonTrack.fMatchTrigger;
     177           0 :   fNMFTClusters           = muonTrack.fNMFTClusters;
     178           0 :   fNWrongMFTClustersMC    = muonTrack.fNWrongMFTClustersMC;
     179           0 :   fMFTClusterPattern      = muonTrack.fMFTClusterPattern;
     180           0 :   fPx                     = muonTrack.fPx; 
     181           0 :   fPy                     = muonTrack.fPy; 
     182           0 :   fPz                     = muonTrack.fPz; 
     183           0 :   fPt                     = muonTrack.fPt; 
     184           0 :   fP                      = muonTrack.fP;
     185           0 :   fEta                    = muonTrack.fEta;
     186           0 :   fRapidity               = muonTrack.fRapidity;
     187           0 :   fFirstTrackingPointX    = muonTrack.fFirstTrackingPointX;
     188           0 :   fFirstTrackingPointY    = muonTrack.fFirstTrackingPointY;
     189           0 :   fFirstTrackingPointZ    = muonTrack.fFirstTrackingPointZ;
     190           0 :   fXAtVertex              = muonTrack.fXAtVertex;
     191           0 :   fYAtVertex              = muonTrack.fYAtVertex;
     192           0 :   fRAtAbsorberEnd         = muonTrack.fRAtAbsorberEnd;
     193           0 :   fChi2OverNdf            = muonTrack.fChi2OverNdf;
     194           0 :   fChi2MatchTrigger       = muonTrack.fChi2MatchTrigger;
     195           0 :   fLabel                  = muonTrack.fLabel;
     196           0 :   fMuonClusterMap         = muonTrack.fMuonClusterMap;
     197           0 :   fHitsPatternInTrigCh    = muonTrack.fHitsPatternInTrigCh;
     198           0 :   fHitsPatternInTrigChTrk = muonTrack.fHitsPatternInTrigChTrk;
     199           0 :   fLoCircuit              = muonTrack.fLoCircuit;
     200           0 :   fIsConnected            = muonTrack.fIsConnected;
     201           0 :   fESDEvent               = muonTrack.fESDEvent;
     202             : 
     203           0 :   fProdVertexXYZ[0]=muonTrack.fProdVertexXYZ[0];
     204           0 :   fProdVertexXYZ[1]=muonTrack.fProdVertexXYZ[1];
     205           0 :   fProdVertexXYZ[2]=muonTrack.fProdVertexXYZ[2];
     206             : 
     207           0 :   if (muonTrack.fCovariances) {
     208           0 :     if (fCovariances) *fCovariances = *(muonTrack.fCovariances);
     209           0 :     else fCovariances = new TMatrixD(*(muonTrack.fCovariances));
     210             :   } 
     211             :   else {
     212           0 :     delete fCovariances;
     213           0 :     fCovariances = 0x0;
     214             :   }
     215             :   
     216           0 :   return *this;
     217             : 
     218           0 : }
     219             : 
     220             : //====================================================================================================================================================
     221             : 
     222             : void AliESDMuonGlobalTrack::Copy(TObject &obj) const {
     223             :   
     224             :   // This overwrites the virtual TObject::Copy()
     225             :   // to allow run time copying without casting
     226             :   // in AliESDEvent
     227             : 
     228           0 :   if (this==&obj) return;
     229           0 :   AliESDMuonGlobalTrack *robj = dynamic_cast<AliESDMuonGlobalTrack*>(&obj);
     230           0 :   if (!robj) return; // not an AliESDMuonGlobalTrack
     231           0 :   *robj = *this;
     232             : 
     233           0 : }
     234             : 
     235             : //====================================================================================================================================================
     236             : 
     237             : void AliESDMuonGlobalTrack::SetPxPyPz(Double_t px, Double_t py, Double_t pz) {
     238             : 
     239           0 :   Double_t mMu = TDatabasePDG::Instance()->GetParticle("mu-")->Mass();
     240           0 :   Double_t eMu = TMath::Sqrt(mMu*mMu + px*px + py*py + pz*pz);
     241             : 
     242           0 :   TLorentzVector kinem(px, py, pz, eMu);
     243             : 
     244           0 :   fPx       =  kinem.Px();
     245           0 :   fPy       =  kinem.Py();
     246           0 :   fPz       =  kinem.Pz();
     247           0 :   fP        =  kinem.P();
     248           0 :   fPt       =  kinem.Pt();
     249           0 :   fEta      =  kinem.Eta();
     250           0 :   fRapidity =  kinem.Rapidity(); 
     251             : 
     252           0 : }
     253             : 
     254             : //====================================================================================================================================================
     255             : 
     256             : const TMatrixD& AliESDMuonGlobalTrack::GetCovariances() const {
     257             : 
     258             :   // Return the covariance matrix (create it before if needed)
     259             : 
     260           0 :   if (!fCovariances) {
     261           0 :     fCovariances = new TMatrixD(5,5);
     262           0 :     fCovariances->Zero();
     263           0 :   }
     264           0 :   return *fCovariances;
     265             : 
     266           0 : }
     267             : 
     268             : //====================================================================================================================================================
     269             : 
     270             : void AliESDMuonGlobalTrack::SetCovariances(const TMatrixD& covariances) {
     271             : 
     272             :   // Set the covariance matrix
     273             : 
     274           0 :   if (fCovariances) *fCovariances = covariances;
     275           0 :   else fCovariances = new TMatrixD(covariances);
     276             : 
     277           0 : }
     278             : 
     279             : //====================================================================================================================================================

Generated by: LCOV version 1.11