ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/
//
// ITS PID class
// checks ITS PID based on ITS dE/dx truncated mean
//
// Authors: Matus Kalisky <matus.kalisky@cern.ch>
//          Markus Fasel <M.Fasel@gsi.de>
//
#include <TClass.h>
#include <TH2F.h>
#include <TList.h>
#include <TMath.h>
#include <TString.h>

//#include "AliAODTrack.h"
//#include "AliAODMCParticle.h"
#include "AliESDtrack.h"
#include "AliLog.h"
#include "AliPID.h"
#include "AliVParticle.h"
#include "AliPIDResponse.h"

#include "AliHFEdetPIDqa.h"
#include "AliHFEpidITS.h"
#include "AliHFEpidQAmanager.h"

ClassImp(AliHFEpidITS)

//___________________________________________________________________
AliHFEpidITS::AliHFEpidITS():
  AliHFEpidBase()
  , fNsigmaITS(3)
  , fMeanShift(0)
{
  //
  // Constructor
  //
  
} 

//___________________________________________________________________
AliHFEpidITS::AliHFEpidITS(const Char_t *name):
  AliHFEpidBase(name)
  , fNsigmaITS(3)
  , fMeanShift(0)
{
  //
  // Default constructor
  //
}

//___________________________________________________________________
AliHFEpidITS::AliHFEpidITS(const AliHFEpidITS &ref):
  AliHFEpidBase("")
  , fNsigmaITS(ref.fNsigmaITS)
  , fMeanShift(ref.fMeanShift)
{
  //
  // Copy constructor
  //
  ref.Copy(*this);
}

//___________________________________________________________________
AliHFEpidITS &AliHFEpidITS::operator=(const AliHFEpidITS &ref){
  //
  // Assignment operator
  //
  if(this != &ref) ref.Copy(*this);
  return *this;
}

//___________________________________________________________________
AliHFEpidITS::~AliHFEpidITS(){
  //
  // Destructor
  //
}

//___________________________________________________________________
void AliHFEpidITS::Copy(TObject &ref) const {
  //
  // Copy function
  // Provides a deep copy
    //
    AliHFEpidITS &target = dynamic_cast<AliHFEpidITS &>(ref);

    target.fNsigmaITS = fNsigmaITS;
    target.fMeanShift = fMeanShift;
    AliHFEpidBase::Copy(ref);
}

//___________________________________________________________________
Bool_t AliHFEpidITS::InitializePID(Int_t /*run*/){
  //
  // ITS PID initialization
  //
  return kTRUE;
}


//___________________________________________________________________
Int_t AliHFEpidITS::IsSelected(const AliHFEpidObject* track, AliHFEpidQAmanager* pidqa) const {
  //
  // Does PID decision for ITS
  //
    if(!fkPIDResponse) return 0;
    AliDebug(2, "PID object available");

    const AliVTrack *vtrack = dynamic_cast<const AliVTrack *>(track->GetRecTrack());
    if(!vtrack) return 0;

    if(pidqa) pidqa->ProcessTrack(track, AliHFEpid::kITSpid, AliHFEdetPIDqa::kBeforePID);
    
    // Fill before selection
    Int_t pdg = 0;
    Double_t sigEle = GetITSNsigmaCorrected(vtrack);
    AliDebug(2, Form("Number of sigmas in ITS: %f", sigEle));
    if(TMath::Abs(sigEle) < fNsigmaITS) pdg = 11;
    if(pdg == 11 && pidqa) pidqa->ProcessTrack(track, AliHFEpid::kITSpid, AliHFEdetPIDqa::kAfterPID);
    return pdg;
//  return 11;  // @TODO: Implement ITS PID decision
}

//___________________________________________________________________
Double_t AliHFEpidITS::GetITSNsigmaCorrected(const AliVTrack *track) const {
  //
  // Get the ITS number of sigmas corrected for a possible shift of the mean dE/dx
  //
  return fkPIDResponse->NumberOfSigmasITS(track, AliPID::kElectron) - fMeanShift;
}
 AliHFEpidITS.cxx:1
 AliHFEpidITS.cxx:2
 AliHFEpidITS.cxx:3
 AliHFEpidITS.cxx:4
 AliHFEpidITS.cxx:5
 AliHFEpidITS.cxx:6
 AliHFEpidITS.cxx:7
 AliHFEpidITS.cxx:8
 AliHFEpidITS.cxx:9
 AliHFEpidITS.cxx:10
 AliHFEpidITS.cxx:11
 AliHFEpidITS.cxx:12
 AliHFEpidITS.cxx:13
 AliHFEpidITS.cxx:14
 AliHFEpidITS.cxx:15
 AliHFEpidITS.cxx:16
 AliHFEpidITS.cxx:17
 AliHFEpidITS.cxx:18
 AliHFEpidITS.cxx:19
 AliHFEpidITS.cxx:20
 AliHFEpidITS.cxx:21
 AliHFEpidITS.cxx:22
 AliHFEpidITS.cxx:23
 AliHFEpidITS.cxx:24
 AliHFEpidITS.cxx:25
 AliHFEpidITS.cxx:26
 AliHFEpidITS.cxx:27
 AliHFEpidITS.cxx:28
 AliHFEpidITS.cxx:29
 AliHFEpidITS.cxx:30
 AliHFEpidITS.cxx:31
 AliHFEpidITS.cxx:32
 AliHFEpidITS.cxx:33
 AliHFEpidITS.cxx:34
 AliHFEpidITS.cxx:35
 AliHFEpidITS.cxx:36
 AliHFEpidITS.cxx:37
 AliHFEpidITS.cxx:38
 AliHFEpidITS.cxx:39
 AliHFEpidITS.cxx:40
 AliHFEpidITS.cxx:41
 AliHFEpidITS.cxx:42
 AliHFEpidITS.cxx:43
 AliHFEpidITS.cxx:44
 AliHFEpidITS.cxx:45
 AliHFEpidITS.cxx:46
 AliHFEpidITS.cxx:47
 AliHFEpidITS.cxx:48
 AliHFEpidITS.cxx:49
 AliHFEpidITS.cxx:50
 AliHFEpidITS.cxx:51
 AliHFEpidITS.cxx:52
 AliHFEpidITS.cxx:53
 AliHFEpidITS.cxx:54
 AliHFEpidITS.cxx:55
 AliHFEpidITS.cxx:56
 AliHFEpidITS.cxx:57
 AliHFEpidITS.cxx:58
 AliHFEpidITS.cxx:59
 AliHFEpidITS.cxx:60
 AliHFEpidITS.cxx:61
 AliHFEpidITS.cxx:62
 AliHFEpidITS.cxx:63
 AliHFEpidITS.cxx:64
 AliHFEpidITS.cxx:65
 AliHFEpidITS.cxx:66
 AliHFEpidITS.cxx:67
 AliHFEpidITS.cxx:68
 AliHFEpidITS.cxx:69
 AliHFEpidITS.cxx:70
 AliHFEpidITS.cxx:71
 AliHFEpidITS.cxx:72
 AliHFEpidITS.cxx:73
 AliHFEpidITS.cxx:74
 AliHFEpidITS.cxx:75
 AliHFEpidITS.cxx:76
 AliHFEpidITS.cxx:77
 AliHFEpidITS.cxx:78
 AliHFEpidITS.cxx:79
 AliHFEpidITS.cxx:80
 AliHFEpidITS.cxx:81
 AliHFEpidITS.cxx:82
 AliHFEpidITS.cxx:83
 AliHFEpidITS.cxx:84
 AliHFEpidITS.cxx:85
 AliHFEpidITS.cxx:86
 AliHFEpidITS.cxx:87
 AliHFEpidITS.cxx:88
 AliHFEpidITS.cxx:89
 AliHFEpidITS.cxx:90
 AliHFEpidITS.cxx:91
 AliHFEpidITS.cxx:92
 AliHFEpidITS.cxx:93
 AliHFEpidITS.cxx:94
 AliHFEpidITS.cxx:95
 AliHFEpidITS.cxx:96
 AliHFEpidITS.cxx:97
 AliHFEpidITS.cxx:98
 AliHFEpidITS.cxx:99
 AliHFEpidITS.cxx:100
 AliHFEpidITS.cxx:101
 AliHFEpidITS.cxx:102
 AliHFEpidITS.cxx:103
 AliHFEpidITS.cxx:104
 AliHFEpidITS.cxx:105
 AliHFEpidITS.cxx:106
 AliHFEpidITS.cxx:107
 AliHFEpidITS.cxx:108
 AliHFEpidITS.cxx:109
 AliHFEpidITS.cxx:110
 AliHFEpidITS.cxx:111
 AliHFEpidITS.cxx:112
 AliHFEpidITS.cxx:113
 AliHFEpidITS.cxx:114
 AliHFEpidITS.cxx:115
 AliHFEpidITS.cxx:116
 AliHFEpidITS.cxx:117
 AliHFEpidITS.cxx:118
 AliHFEpidITS.cxx:119
 AliHFEpidITS.cxx:120
 AliHFEpidITS.cxx:121
 AliHFEpidITS.cxx:122
 AliHFEpidITS.cxx:123
 AliHFEpidITS.cxx:124
 AliHFEpidITS.cxx:125
 AliHFEpidITS.cxx:126
 AliHFEpidITS.cxx:127
 AliHFEpidITS.cxx:128
 AliHFEpidITS.cxx:129
 AliHFEpidITS.cxx:130
 AliHFEpidITS.cxx:131
 AliHFEpidITS.cxx:132
 AliHFEpidITS.cxx:133
 AliHFEpidITS.cxx:134
 AliHFEpidITS.cxx:135
 AliHFEpidITS.cxx:136
 AliHFEpidITS.cxx:137
 AliHFEpidITS.cxx:138
 AliHFEpidITS.cxx:139
 AliHFEpidITS.cxx:140
 AliHFEpidITS.cxx:141
 AliHFEpidITS.cxx:142
 AliHFEpidITS.cxx:143
 AliHFEpidITS.cxx:144