]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGCF/Correlations/DPhi/DiHadronPID/AliAODTrackCutsDiHadronPID.cxx
Merge branch 'esdfilter' which has creation of library for ESD filter + copy calo...
[u/mrichter/AliRoot.git] / PWGCF / Correlations / DPhi / DiHadronPID / AliAODTrackCutsDiHadronPID.cxx
index 8df5e4211ff57f7152b2339572571cafd44a91a1..3b991f6cef2b1cb4e23262a74838667d24cab3db 100644 (file)
@@ -44,6 +44,7 @@ using namespace std;
 
 #include "AliTrackDiHadronPID.h"
 #include "AliHistToolsDiHadronPID.h"
+#include "AliFunctionsDiHadronPID.h"
 
 ClassImp(AliAODTrackCutsDiHadronPID);
 
@@ -62,6 +63,7 @@ AliAODTrackCutsDiHadronPID::AliAODTrackCutsDiHadronPID():
        fDCAzCut(999.),
        fIsMC(kFALSE),
        fLowPtNSigmaTOFOnly(kFALSE),
+       fUseNSigmaOnPIDAxes(kFALSE),
        fTestPt(kFALSE),
        fTestFilterMask(kFALSE),
        fTestMaxEta(kFALSE),
@@ -167,6 +169,7 @@ AliAODTrackCutsDiHadronPID::AliAODTrackCutsDiHadronPID(const char* name):
        fDCAzCut(999.),
        fIsMC(kFALSE),
        fLowPtNSigmaTOFOnly(kFALSE),
+       fUseNSigmaOnPIDAxes(kFALSE),    
        fTestPt(kFALSE),        
        fTestFilterMask(kFALSE),
        fTestMaxEta(kFALSE),
@@ -276,7 +279,7 @@ void AliAODTrackCutsDiHadronPID::InitializeDefaultHistoNamesAndAxes() {
                                                        1.05,1.10,1.15,1.20,1.25,1.30,1.35,1.40,1.45,1.50,1.55,1.60,1.65,1.70,
                                                        1.8,1.9,2.0,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9,3.0,
                                                        3.2,3.4,3.6,3.8,4.0,4.2,4.4,4.6,4.8,5.0};
-       for (Int_t iPtBins = 0; iPtBins < 57; iPtBins++) {fPtAxis[iPtBins] = ptaxis[iPtBins];}
+       for (Int_t iPtBins = 0; iPtBins < 52; iPtBins++) {fPtAxis[iPtBins] = ptaxis[iPtBins];}
        fNPtBins = 51;
 /*
        Double_t ptaxis[57] = {0.20,0.25,0.30,0.35,0.40,0.45,0.50,0.55,0.60,0.65,0.70,0.75,0.80,0.85,0.90,0.95,1.00,
@@ -295,25 +298,31 @@ void AliAODTrackCutsDiHadronPID::InitializeDefaultHistoNamesAndAxes() {
        for (Int_t iPtBins = 0; iPtBins < 5; iPtBins++) {fNPtBinsPID[iPtBins] = nptbinspid[iPtBins];}
 
        // Setting the TOF axes for the PID histograms.
+       //Double_t tofsigmaapprox = 80.;
        Double_t toflowerbound[5][3] = {{-2000.,-6000.,-10000.},{-2000.,-4000.,-10000.},{-1000.,-2000.,-5000.},{-1000.,-1000.,-2500.},{-500.,-500.,-1000.}};
        Double_t tofupperbound[5][3] = {{10000.,10000.,6000.},{10000.,8000.,6000.},{6000.,6000.,6000.},{6000.,6000.,6000.},{4000.,4000.,6000.}};
        Int_t tofbins[5][3] = {{120,160,160},{120,120,160},{140,140,165},{140,140,170},{90,90,140}};
        for (Int_t iPtClass = 0; iPtClass < 5; iPtClass++) {
                for (Int_t iSpecies = 0; iSpecies < 3; iSpecies++) {
                        fTOFLowerBound[iPtClass][iSpecies] = toflowerbound[iPtClass][iSpecies];
+                       //if (fUseNSigmaOnPIDAxes) {toflowerbound[iPtClass][iSpecies] /= tofsigmaapprox;}
                        fTOFUpperBound[iPtClass][iSpecies] = tofupperbound[iPtClass][iSpecies];
+                       //if (fUseNSigmaOnPIDAxes) {tofupperbound[iPtClass][iSpecies] /= tofsigmaapprox;}
                        fTOFbins[iPtClass][iSpecies] = tofbins[iPtClass][iSpecies];
                }
        }
 
        // Setting the TPC axes for the PID histograms.
+       //Double_t tpcsigmaaxpprox = 3.5;
        Double_t tpclowerbound[5][3] = {{-20.,-50.,-100.},{-20.,-30.,-80.},{-25.,-25.,-45.},{-25.,-25.,-45.},{-25.,-20.,-20.}};
        Double_t tpcupperbound[5][3] = {{60.,30.,20.},{60.,40.,20.},{50.,50.,25.},{45.,45.,25.},{25.,30.,30.}}; // Check highest pT bin boundaries for K,p
        Int_t tpcbins[5][3] = {{80,80,120},{80,70,100},{75,75,70},{70,70,70},{50,50,50}};
        for (Int_t iPtClass = 0; iPtClass < 5; iPtClass++) {
                for (Int_t iSpecies = 0; iSpecies < 3; iSpecies++) {
                        fTPCLowerBound[iPtClass][iSpecies] = tpclowerbound[iPtClass][iSpecies];
+                       //if (fUseNSigmaOnPIDAxes) {tpclowerbound[iPtClass][iSpecies] /= tpcsigmaaxpprox;}
                        fTPCUpperBound[iPtClass][iSpecies] = tpcupperbound[iPtClass][iSpecies];
+                       //if (fUseNSigmaOnPIDAxes) {tpcupperbound[iPtClass][iSpecies] /= tpcsigmaaxpprox;}
                        fTPCbins[iPtClass][iSpecies] = tpcbins[iPtClass][iSpecies];
                }
        }
@@ -709,7 +718,7 @@ TObjArray* AliAODTrackCutsDiHadronPID::GetDataTPCTOFMismatch(Int_t charge, Int_t
 }
 
 // -----------------------------------------------------------------------
-Double_t AliAODTrackCutsDiHadronPID::GetPtMin(const Int_t bin) const {
+Double_t AliAODTrackCutsDiHadronPID::GetPtMin(Int_t bin) const {
        
        // Same as: TAxis::GetBinLowEdge()
 
@@ -725,7 +734,7 @@ Double_t AliAODTrackCutsDiHadronPID::GetPtMin(const Int_t bin) const {
 }
 
 // -----------------------------------------------------------------------
-Double_t AliAODTrackCutsDiHadronPID::GetPtMax(const Int_t bin) const {
+Double_t AliAODTrackCutsDiHadronPID::GetPtMax(Int_t bin) const {
        
        // Same as: TAxis::GetBinUpEdge()
 
@@ -741,7 +750,7 @@ Double_t AliAODTrackCutsDiHadronPID::GetPtMax(const Int_t bin) const {
 }
 
 // -----------------------------------------------------------------------
-Int_t AliAODTrackCutsDiHadronPID::GetNPtBinsPID(const Int_t ptclass) const {
+Int_t AliAODTrackCutsDiHadronPID::GetNPtBinsPID(Int_t ptclass) const {
 
        // Returns the number of pt bins that are used in every "pt class",
        // where a "pt class" is a range in pT which have the same range in
@@ -785,7 +794,7 @@ Double_t* AliAODTrackCutsDiHadronPID::GetPtAxisPID() const {
 }
 
 // -----------------------------------------------------------------------
-Double_t AliAODTrackCutsDiHadronPID::GetPtMinPID(const Int_t bin) const {
+Double_t AliAODTrackCutsDiHadronPID::GetPtMinPID(Int_t bin) const {
 
        // Same as: TAxis::GetBinLowEdge()
 
@@ -806,7 +815,7 @@ Double_t AliAODTrackCutsDiHadronPID::GetPtMinPID(const Int_t bin) const {
 }
 
 // -----------------------------------------------------------------------
-Double_t AliAODTrackCutsDiHadronPID::GetPtMaxPID(const Int_t bin) const {
+Double_t AliAODTrackCutsDiHadronPID::GetPtMaxPID(Int_t bin) const {
 
        // Same as: TAxis::GetBinUpEdge()
 
@@ -827,7 +836,7 @@ Double_t AliAODTrackCutsDiHadronPID::GetPtMaxPID(const Int_t bin) const {
 }
 
 // -----------------------------------------------------------------------
-Double_t AliAODTrackCutsDiHadronPID::GetPtClassMin(const Int_t ptclass) const {
+Double_t AliAODTrackCutsDiHadronPID::GetPtClassMin(Int_t ptclass) const {
 
        // Returns the minimum p_T of a p_T class.
 
@@ -842,7 +851,7 @@ Double_t AliAODTrackCutsDiHadronPID::GetPtClassMin(const Int_t ptclass) const {
 }
 
 // -----------------------------------------------------------------------
-Double_t AliAODTrackCutsDiHadronPID::GetPtClassMax(const Int_t ptclass) const {
+Double_t AliAODTrackCutsDiHadronPID::GetPtClassMax(Int_t ptclass) const {
 
        // Returns the maximum p_T of a p_T class.
 
@@ -857,7 +866,7 @@ Double_t AliAODTrackCutsDiHadronPID::GetPtClassMax(const Int_t ptclass) const {
 }
 
 // -----------------------------------------------------------------------
-Bool_t AliAODTrackCutsDiHadronPID::RequestQAHistos(const Int_t histoclass, const Bool_t Enable3DSpectra, const Bool_t EnablePIDHistos) {
+Bool_t AliAODTrackCutsDiHadronPID::RequestQAHistos(Int_t histoclass, Bool_t Enable3DSpectra, Bool_t EnablePIDHistos) {
 
        // Request certain histograms to be filled.
 
@@ -1104,7 +1113,7 @@ Bool_t AliAODTrackCutsDiHadronPID::IsSelectedData(AliTrackDiHadronPID* track, Do
 
        // Fill the filterbit histogram.
        for (Int_t iBin = (fRelevantBitsArray->GetSize() - 1); iBin >= 0; --iBin) {
-               if ( (track->GetFilterMap()&(1<<fRelevantBitsArray->At(iBin))) == (1<<fRelevantBitsArray->At(iBin))) {
+               if ( (((Int_t)track->GetFilterMap())&(1<<fRelevantBitsArray->At(iBin))) == (1<<fRelevantBitsArray->At(iBin))) {
                        fHistAcceptedFilterBits->Fill(iBin);
                        break;
                }
@@ -1247,7 +1256,7 @@ Bool_t AliAODTrackCutsDiHadronPID::IsSelectedReconstructedMC(AliTrackDiHadronPID
 }
 
 // -----------------------------------------------------------------------
-Int_t AliAODTrackCutsDiHadronPID::GetPtClass(const Int_t ptbin) const {
+Int_t AliAODTrackCutsDiHadronPID::GetPtClass(Int_t ptbin) const {
 
        // Returns a p_T class as a function of bin (PID histos)
        if (fDebug > 1) {cout << Form("File: %s, Line: %i, Function: %s",__FILE__,__LINE__,__func__) << endl;}
@@ -1270,7 +1279,7 @@ Int_t AliAODTrackCutsDiHadronPID::GetPtClass(const Int_t ptbin) const {
 }
 
 // -----------------------------------------------------------------------
-Int_t AliAODTrackCutsDiHadronPID::GetBinInPtClass(const Int_t ptbin) const {
+Int_t AliAODTrackCutsDiHadronPID::GetBinInPtClass(Int_t ptbin) const {
 
        // Returns the bin withing the p_T class (i.e., 1..Nbins)
        if (fDebug > 1) {cout << Form("File: %s, Line: %i, Function: %s",__FILE__,__LINE__,__func__) << endl;}
@@ -1394,20 +1403,6 @@ Bool_t AliAODTrackCutsDiHadronPID::FillDataHistos(Int_t histoclass, AliTrackDiHa
        //      checkSum++;     cout<<"Pion found: nSigTOF: "<<track->GetNumberOfSigmasTOF(0)<<"; nSigTPC: "<<track->GetNumberOfSigmasTPC(0)<<endl;
        }
 
-       // if (TMath::Sqrt(track->GetNumberOfSigmasTOF(1) * track->GetNumberOfSigmasTOF(1) + 
-       //                              track->GetNumberOfSigmasTPC(1) * track->GetNumberOfSigmasTPC(1)) < 1.) {
-       //      fHistDataDCAxyOneSigma[0 + histoclass]->Fill(track->Pt(),track->GetXYAtDCA());  // All species.
-       //      fHistDataDCAxyOneSigma[6 + histoclass]->Fill(track->Pt(),track->GetXYAtDCA());  // Kaons.
-       // //   checkSum++;     cout<<"Kaon found: nSigTOF: "<<track->GetNumberOfSigmasTOF(1)<<"; nSigTPC: "<<track->GetNumberOfSigmasTPC(1)<<endl;
-       // }
-       // if (TMath::Sqrt(track->GetNumberOfSigmasTOF(2) * track->GetNumberOfSigmasTOF(2) + 
-       //                              track->GetNumberOfSigmasTPC(2) * track->GetNumberOfSigmasTPC(2)) < 1.) {                
-       //      fHistDataDCAxyOneSigma[0 + histoclass]->Fill(track->Pt(),track->GetXYAtDCA());  // All species.
-       //      fHistDataDCAxyOneSigma[9 + histoclass]->Fill(track->Pt(),track->GetXYAtDCA());  // Protons.
-       // //   checkSum++;     cout<<"Proton found: nSigTOF: "<<track->GetNumberOfSigmasTOF(2)<<"; nSigTPC: "<<track->GetNumberOfSigmasTPC(2)<<endl;
-       // }
-       // for protons and low pt:
-
        // for protons and low pt, only when fLowPtNSigmaTOFOnly set to kTRUE:
        if ((TMath::Abs(track->Pt()) < 1.8) && fLowPtNSigmaTOFOnly) {
 
@@ -1445,7 +1440,9 @@ Bool_t AliAODTrackCutsDiHadronPID::FillDataHistos(Int_t histoclass, AliTrackDiHa
                if (!CheckRapidity(track->Y(iSpecies))) continue;
 
                for (Int_t iPtClass = 0; iPtClass < 5; iPtClass++) {
-                       fHistDataPID[histoclass][iSpecies][iPtClass]->Fill(track->Pt(),track->GetTOFsignalMinusExpected(iSpecies),track->GetTPCsignalMinusExpected(iSpecies));          
+                       fHistDataPID[histoclass][iSpecies][iPtClass]->Fill(track->Pt(),
+                               (fUseNSigmaOnPIDAxes ? track->GetNumberOfSigmasTOF(iSpecies) : track->GetTOFsignalMinusExpected(iSpecies)),
+                               (fUseNSigmaOnPIDAxes ? track->GetNumberOfSigmasTPC(iSpecies) : track->GetTPCsignalMinusExpected(iSpecies)));            
                }
        }
 
@@ -1463,10 +1460,36 @@ Bool_t AliAODTrackCutsDiHadronPID::FillTOFMismatchHistos(Int_t histoclass, AliTr
 
                // Note that a possible Y cut is only done on the PID cuts!
                if (!CheckRapidity(track->Y(iSpecies))) continue;
+/*
+               if (!track->GetNumberOfSigmasTOF(iSpecies)) {
+                       cout<<"NSigma TOF: "<<track->GetNumberOfSigmasTOF(iSpecies)<<endl;
+                       cout<<"TOFsignal exp: "<<track->GetTOFsignalExpected(iSpecies)<<endl;
+                       cout<<"TOFsigma exp: "<<track->GetTOFsigmaExpected(iSpecies)<<endl;
+                       cout<<endl;
+               }
+*/
+
+               Double_t TOFmismatchSigma = randomhittime - track->GetTOFsignalExpected(iSpecies);
+               if (fUseNSigmaOnPIDAxes) {
+                       if (track->GetTOFsigmaExpected(iSpecies) < 10e-30) {
+                               /*
+                               cout << "ERROR: division through (almost) zero on the mismatch signal..."<<endl;
+                               cout << "Random time: "<<randomhittime<<endl;
+                               cout << "Exp TOF signal track for species "<<iSpecies<<" "<<track->GetTOFsignalExpected(iSpecies)<<endl;
+                               cout << "Exp Mismatch signal assuming species "<< iSpecies<<": "<<TOFmismatchSigma<<endl;
+                               cout << "Expected TOF sigma: "<<track->GetTOFsigmaExpected(iSpecies)<<endl;
+                               ULong_t flags_kTOFout_kTIME = (UInt_t)(AliAODTrack::kTOFout)|(UInt_t)(AliAODTrack::kTIME);
+                               cout << "Random track TOF status (kTOFout, kTIME): "<<(((track->GetFlags())&flags_kTOFout_kTIME)==flags_kTOFout_kTIME)<<endl;
+                               */
+                       } else {
+                               TOFmismatchSigma /= track->GetTOFsigmaExpected(iSpecies);
+                       }
+               }
 
                for (Int_t iPtClass = 0; iPtClass < 5; iPtClass++) {
-                       fHistTOFMismatch[histoclass][iSpecies][iPtClass]->Fill(track->Pt(),randomhittime - track->GetTOFsignalExpected(iSpecies));              
-                       fHistTPCTOFMismatch[histoclass][iSpecies][iPtClass]->Fill(track->Pt(),randomhittime - track->GetTOFsignalExpected(iSpecies),track->GetTPCsignalMinusExpected(iSpecies));                        
+                       fHistTOFMismatch[histoclass][iSpecies][iPtClass]->Fill(track->Pt(), TOFmismatchSigma);          
+                       fHistTPCTOFMismatch[histoclass][iSpecies][iPtClass]->Fill(track->Pt(), TOFmismatchSigma,
+                               (fUseNSigmaOnPIDAxes ? track->GetNumberOfSigmasTPC(iSpecies) : track->GetTPCsignalMinusExpected(iSpecies)));                    
                }
        }
 
@@ -1539,12 +1562,16 @@ Bool_t AliAODTrackCutsDiHadronPID::FillRecMCHistos(Int_t histoclass, AliTrackDiH
                        if (!CheckRapidity(track->MCY())) continue;
 
                        for (Int_t iPtClass = 0; iPtClass < 5; iPtClass++) {
-                               //cout << "recpt: " << track->Pt() << " mcpt: "<<track->MCPt() << " DTOF: " << track->GetTOFsignalMinusExpected(iSpecies) << " DTPC: " << track->GetTPCsignalMinusExpected(iSpecies) << endl;
+                               //cout << "recpt: " << track->Pt() << " mcpt: "<<track->MCPt() << " DTOF: " << 
+                               //(fUseNSigmaOnPIDAxes ? track->GetNumberOfSigmasTOF(iSpecies) : track->GetTOFsignalMinusExpected(iSpecies)) << " DTPC: " << 
+                               //(fUseNSigmaOnPIDAxes ? track->GetNumberOfSigmasTPC(iSpecies) : track->GetTPCsignalMinusExpected(iSpecies)) << endl;
 
-                               fHistPrimRecPID[histoclass][iSpecies][iPtClass]->Fill(track->MCPt(),track->GetTOFsignalMinusExpected(iSpecies));                
+                               fHistPrimRecPID[histoclass][iSpecies][iPtClass]->Fill(track->MCPt(),
+                                       (fUseNSigmaOnPIDAxes ? track->GetNumberOfSigmasTOF(iSpecies) : track->GetTOFsignalMinusExpected(iSpecies)));            
 
                                if (track->IsTOFMismatch()) {
-                                       fHistPrimRecMismatch[histoclass][iSpecies][iPtClass]->Fill(track->MCPt(),track->GetTOFsignalMinusExpected(iSpecies));           
+                                       fHistPrimRecMismatch[histoclass][iSpecies][iPtClass]->Fill(track->MCPt(),
+                                               (fUseNSigmaOnPIDAxes ? track->GetNumberOfSigmasTOF(iSpecies) : track->GetTOFsignalMinusExpected(iSpecies)));            
                                }
                        }
                }
@@ -1715,9 +1742,9 @@ void AliAODTrackCutsDiHadronPID::SetXaxisAcceptedFilterBits() {
        Int_t baseArraySizeTmp = 0;
        Int_t fullArraySizeTmp = 0;
 
-       while (fFilterMask > (1<<(largestBit)) ) {
-               if ((fFilterMask&(1<<largestBit))==(1<<largestBit)) {
-                       fullArraySizeTmp += TMath::Power(2, baseArraySizeTmp);
+       while (((Int_t)fFilterMask) >= (1<<(largestBit)) ) {
+               if ((((Int_t)fFilterMask)&(1<<largestBit))==(1<<largestBit)) {
+                       fullArraySizeTmp += AliFunctionsDiHadronPID::Power(2, baseArraySizeTmp);
                        baseArraySizeTmp++;
                }
                largestBit++;
@@ -1726,12 +1753,13 @@ void AliAODTrackCutsDiHadronPID::SetXaxisAcceptedFilterBits() {
 
        // Step 2: Create and fill base array.
        const Int_t baseArraySize = baseArraySizeTmp;
-       Int_t baseArray[baseArraySize];
+       Int_t* baseArray = new Int_t[baseArraySize];
+       for (Int_t ii = 0; ii < baseArraySize; ++ii) {baseArray[ii] = 0;}
 
        Int_t iBaseArray = 0;
        for (Int_t iBit = 0; iBit <= largestBit; ++iBit) {
 
-               if ((fFilterMask&(1<<iBit))==(1<<iBit)) {               
+               if ((((Int_t)fFilterMask)&(1<<iBit))==(1<<iBit)) {              
                        baseArray[iBaseArray] = (1<<iBit);
                        iBaseArray++;
                }
@@ -1740,12 +1768,12 @@ void AliAODTrackCutsDiHadronPID::SetXaxisAcceptedFilterBits() {
 
        // Step 3: Create and fill full array.
        const Int_t fullArraySize = fullArraySizeTmp;
-       Int_t fullArray[fullArraySize];
+       Int_t* fullArray = new Int_t[fullArraySize];
        fullArray[0] = baseArray[0];
        Int_t iFullArray = 1;
 
        for (Int_t ii = 1; ii < baseArraySize; ++ii) {
-               Int_t range = (iFullArray + TMath::Power(2,ii));
+               Int_t range = (iFullArray + AliFunctionsDiHadronPID::Power(2,ii));
                for (Int_t jj = iFullArray; jj < range; ++jj) {
                        
                        fullArray[jj] = baseArray[ii];
@@ -1756,13 +1784,17 @@ void AliAODTrackCutsDiHadronPID::SetXaxisAcceptedFilterBits() {
                        }
 
                }
-               iFullArray += TMath::Power(2,ii);
+               iFullArray += AliFunctionsDiHadronPID::Power(2,ii);
 
        }
 
        // Step 4: Convert to TArrayI object.
        fRelevantBitsArray = new TArrayI(fullArraySize, fullArray);
 
+       // Delete the temporary arrays.
+       delete baseArray;
+       delete fullArray;
+
 }
 
 // -----------------------------------------------------------------------
@@ -1883,11 +1915,19 @@ TH3F* AliAODTrackCutsDiHadronPID::InitializePIDHisto(const char* name, Int_t his
 
        if (fDebug > 1) {cout << Form("File: %s, Line: %i, Function: %s",__FILE__,__LINE__,__func__) << endl;}
 
+       TString PIDaxeslabel;
+       if (fUseNSigmaOnPIDAxes) {PIDaxeslabel = ";n#sigma_{TOF};n#sigma_{TPC}";} 
+       else {PIDaxeslabel = ";#Delta t (ps);dE/dx (a.u.)";}
+
        TH3F* hout = new TH3F(Form("%s%s%s%s",name,fHistoName[histoclass].Data(),fParticleName[expspecies].Data(),fPtClassName[ptclass].Data()),
-               Form("PID %s (Exp: %s);p_{T} (GeV/c);#Delta t (ps);dE/dx (a.u.)",fHistoName[histoclass].Data(),fParticleName[expspecies].Data()),
+               Form("PID %s (Exp: %s);p_{T} (GeV/c)%s",fHistoName[histoclass].Data(),fParticleName[expspecies].Data(),PIDaxeslabel.Data()),
                fNPtBinsPID[ptclass],fPtBoundaryPID[ptclass],fPtBoundaryPID[ptclass+1],
-               fTOFbins[ptclass][expspecies],fTOFLowerBound[ptclass][expspecies],fTOFUpperBound[ptclass][expspecies],
-               fTPCbins[ptclass][expspecies],fTPCLowerBound[ptclass][expspecies],fTPCUpperBound[ptclass][expspecies]);
+               fTOFbins[ptclass][expspecies],
+               (fUseNSigmaOnPIDAxes ? fTOFLowerBound[ptclass][expspecies] / AliTrackDiHadronPID::fSigmaTOFStd : fTOFLowerBound[ptclass][expspecies]),
+               (fUseNSigmaOnPIDAxes ? fTOFUpperBound[ptclass][expspecies] / AliTrackDiHadronPID::fSigmaTOFStd : fTOFUpperBound[ptclass][expspecies]),
+               fTPCbins[ptclass][expspecies],
+               (fUseNSigmaOnPIDAxes ? fTPCLowerBound[ptclass][expspecies] / AliTrackDiHadronPID::fSigmaTPCStd : fTPCLowerBound[ptclass][expspecies]),
+               (fUseNSigmaOnPIDAxes ? fTPCUpperBound[ptclass][expspecies] / AliTrackDiHadronPID::fSigmaTPCStd : fTPCUpperBound[ptclass][expspecies]));
 
        hout->SetDirectory(0);
 
@@ -1898,12 +1938,19 @@ TH3F* AliAODTrackCutsDiHadronPID::InitializePIDHisto(const char* name, Int_t his
 // -----------------------------------------------------------------------
 TH2F* AliAODTrackCutsDiHadronPID::InitializeTOFMismatchHisto(const char* name, Int_t histoclass, Int_t expspecies, Int_t ptclass) {
 
+       // Is basically the same as InitializeTOFHisto -> CAN BE REMOVED!
        if (fDebug > 1) {cout << Form("File: %s, Line: %i, Function: %s",__FILE__,__LINE__,__func__) << endl;}
 
+       TString PIDaxeslabel;
+       if (fUseNSigmaOnPIDAxes) {PIDaxeslabel = ";n#sigma_{TOF}";} 
+       else {PIDaxeslabel = ";#Delta t (ps)";}
+
        TH2F* hout = new TH2F(Form("%s%s%s%s",name,fHistoName[histoclass].Data(),fParticleName[expspecies].Data(),fPtClassName[ptclass].Data()),
-               Form("TOF Mismatch %s (Exp: %s);p_{T} (GeV/c);#Delta t (ps)",fHistoName[histoclass].Data(),fParticleName[expspecies].Data()),
+               Form("TOF Mismatch %s (Exp: %s);p_{T} (GeV/c)%s",fHistoName[histoclass].Data(),fParticleName[expspecies].Data(),PIDaxeslabel.Data()),
                fNPtBinsPID[ptclass],fPtBoundaryPID[ptclass],fPtBoundaryPID[ptclass+1],
-               fTOFbins[ptclass][expspecies],fTOFLowerBound[ptclass][expspecies],fTOFUpperBound[ptclass][expspecies]);
+               fTOFbins[ptclass][expspecies],
+               (fUseNSigmaOnPIDAxes ? fTOFLowerBound[ptclass][expspecies] / AliTrackDiHadronPID::fSigmaTOFStd : fTOFLowerBound[ptclass][expspecies]),
+               (fUseNSigmaOnPIDAxes ? fTOFUpperBound[ptclass][expspecies] / AliTrackDiHadronPID::fSigmaTOFStd : fTOFUpperBound[ptclass][expspecies]));
 
        hout->SetDirectory(0);
 
@@ -1916,10 +1963,16 @@ TH2F* AliAODTrackCutsDiHadronPID::InitializeTOFHisto(const char* name, Int_t his
 
        if (fDebug > 1) {cout << Form("File: %s, Line: %i, Function: %s",__FILE__,__LINE__,__func__) << endl;}
 
+       TString PIDaxeslabel;
+       if (fUseNSigmaOnPIDAxes) {PIDaxeslabel = ";n#sigma_{TOF}";} 
+       else {PIDaxeslabel = ";#Delta t (ps)";}
+
        TH2F* hout = new TH2F(Form("%s%s%s%s",name,fHistoName[histoclass].Data(),fParticleName[expspecies].Data(),fPtClassName[ptclass].Data()),
-               Form("TOF %s (Exp: %s);p_{T} (GeV/c);#Delta t (ps)",fHistoName[histoclass].Data(),fParticleName[expspecies].Data()),
+               Form("TOF %s (Exp: %s);p_{T} (GeV/c)%s",fHistoName[histoclass].Data(),fParticleName[expspecies].Data(),PIDaxeslabel.Data()),
                fNPtBinsPID[ptclass],fPtBoundaryPID[ptclass],fPtBoundaryPID[ptclass+1],
-               fTOFbins[ptclass][expspecies],fTOFLowerBound[ptclass][expspecies],fTOFUpperBound[ptclass][expspecies]);
+               fTOFbins[ptclass][expspecies],
+               (fUseNSigmaOnPIDAxes ? fTOFLowerBound[ptclass][expspecies] / AliTrackDiHadronPID::fSigmaTOFStd : fTOFLowerBound[ptclass][expspecies]),
+               (fUseNSigmaOnPIDAxes ? fTOFUpperBound[ptclass][expspecies] / AliTrackDiHadronPID::fSigmaTOFStd : fTOFUpperBound[ptclass][expspecies]));
 
        hout->SetDirectory(0);