LCOV - code coverage report
Current view: top level - ANALYSIS/ANALYSISalice - AliAODITSsaTrackCuts.cxx (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 67 0.0 %
Date: 2016-06-14 17:26:59 Functions: 0 13 0.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             : /* $Id$ */
      17             : //
      18             : // This class applies the ITSsa cuts at the AOD level.
      19             : // Needed for MuonCalo pass where the FilterBit information was not properly saved.
      20             : // It contains also some quality cuts which can be modifed by user.
      21             : //
      22             : // Author: Igor Lakomov <Igor.Lakomov@cern.ch>
      23             : //
      24             : 
      25             : #include "AliAODITSsaTrackCuts.h"
      26             : 
      27           0 : AliAODITSsaTrackCuts::AliAODITSsaTrackCuts() : fMinNClustersITS(0), fMaxChi2PerClustersITS(0), fdcaxycut(0), fdcazcut(0), fPrimaryVertex(0)
      28           0 : {
      29             : //constructor
      30           0 : }
      31             : 
      32             : AliAODITSsaTrackCuts::~AliAODITSsaTrackCuts()
      33           0 : {
      34             : //destructor
      35           0 :   delete fdcaxycut;
      36           0 :   delete fdcazcut;
      37             :   // Do not delete, not owner  delete fPrimaryVertex;
      38           0 : }
      39             : 
      40             : Bool_t AliAODITSsaTrackCuts::AcceptTrack(const AliAODTrack* aodTrack)
      41             : {
      42           0 :   if (!fPrimaryVertex) {
      43           0 :     AliFatal("PrimaryVertex is not set! Please, use AliAODITSsaTrackCuts::ExtractAndSetPrimaryVertex(AliVEvent *event)\n");
      44             : //    return kFALSE;
      45           0 :   }
      46             : 
      47           0 :   if (aodTrack->IsMuonTrack()) return kFALSE; //reject Muon duplicates
      48             : 
      49             :   Int_t nClustersITS = 0;
      50           0 :   nClustersITS = aodTrack->GetITSNcls();
      51           0 :   if (nClustersITS<fMinNClustersITS) return kFALSE; //cut on minimum number of ITS clusters
      52             : 
      53             :   Float_t chi2PerClusterITS = -1;
      54           0 :   chi2PerClusterITS = aodTrack->GetITSchi2()/Float_t(nClustersITS);
      55           0 :   if (chi2PerClusterITS>fMaxChi2PerClustersITS) return kFALSE; //cut on max chi2 per ITS cluster
      56             : 
      57           0 :   if ( !( aodTrack->HasPointOnITSLayer(AliESDtrackCuts::kSPD*2) || aodTrack->HasPointOnITSLayer(AliESDtrackCuts::kSPD*2+1) ) ) return kFALSE; //at least one point in the SPD
      58             : 
      59           0 :   UInt_t status = aodTrack->GetStatus();
      60           0 :   if ((status&AliESDtrack::kITSrefit)==0) return kFALSE;
      61             : 
      62           0 :   if ((status & AliESDtrack::kITSin) == 0 || (status & AliESDtrack::kTPCin)) return kFALSE;  else if(!(status & AliESDtrack::kITSpureSA)) return kFALSE;
      63             : 
      64           0 :   Double_t pt = aodTrack->Pt();
      65           0 :   Double_t fDCAXY = CalculateDCAXY(aodTrack);
      66           0 :   if (fDCAXY>fdcaxycut->Eval(pt)) return kFALSE; // pt-dependent cut on DCAXY
      67             : 
      68           0 :   Double_t fDCAZ = CalculateDCAZ(aodTrack);    
      69           0 :   if (TMath::Abs(fDCAZ)>fdcazcut->Eval(pt)) return kFALSE; // pt-dependent cut on DCAZ
      70             : 
      71           0 :   return kTRUE; //default return
      72           0 : }
      73             : 
      74             : Double_t AliAODITSsaTrackCuts::CalculateDCAXY(const AliAODTrack* aodTrack)
      75             : {
      76           0 :   if (!fPrimaryVertex) {
      77           0 :     AliFatal("PrimaryVertex is not set! Please, use AliAODITSsaTrackCuts::ExtractAndSetPrimaryVertex(AliVEvent *event)\n");
      78             : //    return -1;
      79           0 :   }
      80           0 :   Double_t pos[3], v[3];
      81           0 :   fPrimaryVertex->GetXYZ(v);
      82           0 :   aodTrack->GetXYZ(pos);
      83           0 :   Double_t vDCAglobalx  = pos[0] - v[0];
      84           0 :   Double_t vDCAglobaly  = pos[1] - v[1];
      85           0 :   return TMath::Sqrt(vDCAglobalx*vDCAglobalx + vDCAglobaly*vDCAglobaly);
      86           0 : }
      87             : 
      88             : Double_t AliAODITSsaTrackCuts::CalculateDCAZ(const AliAODTrack* aodTrack)
      89             : {
      90           0 :   if (!fPrimaryVertex) {
      91           0 :     AliFatal("PrimaryVertex is not set! Please, use AliAODITSsaTrackCuts::ExtractAndSetPrimaryVertex(AliVEvent *event)\n");
      92             : //    return -1;
      93           0 :   }
      94           0 :   Double_t pos[3], vz;
      95           0 :   vz = fPrimaryVertex->GetZ();
      96           0 :   aodTrack->GetXYZ(pos);
      97           0 :   return pos[2] - vz;
      98           0 : }
      99             : 
     100             : void AliAODITSsaTrackCuts::SetDefaultDCAXYptdepCut2015()
     101             : {
     102           0 :   if(fdcaxycut){
     103           0 :     delete fdcaxycut;
     104             :   }
     105           0 :   fdcaxycut = new TFormula("fdcaxycut","0.0231+0.0315/x^1.3"); // 7*(0.0033+0.0045/pt^1.3)
     106           0 : }
     107             : 
     108             : void AliAODITSsaTrackCuts::SetUserDCAXYptdepCut(const char *formula)
     109             : {
     110           0 :   if(fdcaxycut){
     111           0 :     delete fdcaxycut;
     112             :   }
     113           0 :   fdcaxycut = new TFormula("fdcaxycut",formula);
     114           0 : }
     115             : 
     116             : void AliAODITSsaTrackCuts::SetDefaultDCAZptdepCut2015()
     117             : {
     118           0 :   if(fdcazcut){
     119           0 :     delete fdcazcut;
     120             :   }
     121           0 :   fdcazcut = new TFormula("fdcazcut","1");
     122           0 : }
     123             : 
     124             : void AliAODITSsaTrackCuts::SetUserDCAZptdepCut(const char *formula)
     125             : {
     126           0 :   if(fdcazcut){
     127           0 :     delete fdcazcut;
     128             :   }
     129           0 :   fdcazcut = new TFormula("fdcazcut",formula);
     130           0 : }
     131             : 
     132             : AliAODITSsaTrackCuts* AliAODITSsaTrackCuts::GetStandardAODITSsaTrackCuts2015()
     133             : {
     134           0 :   AliAODITSsaTrackCuts* itssatrackcuts = new AliAODITSsaTrackCuts();
     135           0 :   itssatrackcuts->SetDefaultDCAXYptdepCut2015();
     136           0 :   itssatrackcuts->SetDefaultDCAZptdepCut2015();
     137           0 :   itssatrackcuts->SetMinNClustersITS(4);
     138           0 :   itssatrackcuts->SetMaxChi2PerClustersITS(2.5);
     139             : 
     140           0 :   return itssatrackcuts;
     141           0 : }

Generated by: LCOV version 1.11