#include <AliPID.h>
#include <AliVertexerTracks.h>
#include <AliESDpid.h>
+#include <AliTPCPIDResponse.h>
class AliLog;
class AliESDVertex;
gP = tpcTrack->P();
gEta = tpcTrack->Eta();
}
- //We start the P slices at >0.3GeV/c with a bining of 50MeV/c ==> Int_t(0.3001/0.05) = 6
- Int_t nbinP = Int_t(gP/0.05) - 6;
- Double_t tpcSignal = track->GetTPCsignal();
- Double_t dEdxTheory = Bethe(gP/9.38270000000000048e-01);
- Double_t dEdxSigma = fdEdxSigma[nbinP];
- Double_t nsigma = TMath::Abs(tpcSignal - dEdxTheory)/(tpcSignal*(dEdxSigma/TMath::Sqrt(track->GetTPCsignalN())));
- if(nsigma <= fNSigma)
+ Double_t fAlephParameters[5];
+ if(fAnalysisMC) {
+ fAlephParameters[0] = 2.15898e+00/50.;
+ fAlephParameters[1] = 1.75295e+01;
+ fAlephParameters[2] = 3.40030e-09;
+ fAlephParameters[3] = 1.96178e+00;
+ fAlephParameters[4] = 3.91720e+00;
+ }
+ else {
+ fAlephParameters[0] = 0.0283086;
+ fAlephParameters[1] = 2.63394e+01;
+ fAlephParameters[2] = 5.04114e-11;
+ fAlephParameters[3] = 2.12543e+00;
+ fAlephParameters[4] = 4.88663e+00;
+ }
+
+ AliESDpid *fESDpid = new AliESDpid();
+ AliTPCPIDResponse tpcResponse = fESDpid->GetTPCResponse();
+ tpcResponse.SetBetheBlochParameters(fAlephParameters[0],fAlephParameters[1],fAlephParameters[2],fAlephParameters[3],fAlephParameters[4]);
+ Double_t normalizeddEdx = TMath::Log(track->GetTPCsignal()/tpcResponse.GetExpectedSignal(gP,AliPID::kProton));
+
+ if(normalizeddEdx >= -0.15)
return kTRUE;
}
//2D de/dx vs P
TH2F *gHistdEdxP = dynamic_cast<TH2F *>(fQA2DList->At(0));
gHistdEdxP->SetStats(kFALSE);
- drawdEdx(gHistdEdxP);
+ drawdEdx(gHistdEdxP,0);
TH2F *gHistProtonsdEdxP = dynamic_cast<TH2F *>(fQA2DList->At(1));
gHistProtonsdEdxP->SetStats(kFALSE);
//2D de/dx vs P
TH2F *gHistZP = dynamic_cast<TH2F *>(fQA2DList->At(2));
gHistZP->SetStats(kFALSE);
- //drawdEdx(gHistdEdxP);
+ drawdEdx(gHistZP,1);
TH2F *gHistProtonsZP = dynamic_cast<TH2F *>(fQA2DList->At(3));
gHistProtonsZP->SetStats(kFALSE);
cdEdx->cd(2)->SetLogx(); gHistProtonsdEdxP->Draw("col");
+ TCanvas *cZdEdx = new TCanvas("cZdEdx","Normalized dE/dx (TPC)",500,0,700,400);
+ cZdEdx->SetFillColor(10); cZdEdx->SetHighLightColor(10); cZdEdx->Divide(2,1);
+ cZdEdx->cd(1); gHistZP->Draw("col");
+ cZdEdx->cd(2); gHistProtonsZP->Draw("col");
+
TCanvas *cEtaPhi = new TCanvas("cEtaPhi",
"eta-phi",
0,0,700,400);
}
//___________________________________________________//
-void drawdEdx(TH2F *gHistdEdxP) {
+void drawdEdx(TH2F *gHistdEdxP, Int_t iMode) {
//Draws the dE/dx distributions for the different momentum bins
+ //iMode == 0: dEdx vs P
+ //iMode == 1: normalized(dEdx) vs P
TString title;
TH1D *gHist[100];
Int_t iCounter = 0;
for(Int_t iBin = 1; iBin <= gHistdEdxP->GetNbinsX(); iBin++) {
if((binMax > 0.41)&&(binMin < 1.01)) {
- title = "P: "; title += binMin; title += " - ";
- title += binMax; title += "GeV/c";
- canvasTitle = "dedxMomentumSlice."; canvasTitle += iCounter;
- canvasTitle += ".gif";
- c[iCounter] = new TCanvas(title.Data(),title.Data(),0,0,500,500);
+ if(iMode == 0) {
+ title = "(dEdx)P: "; title += binMin; title += " - ";
+ title += binMax; title += "GeV/c";
+ canvasTitle = "dedxMomentumSlice."; canvasTitle += iCounter;
+ canvasTitle += ".gif";
+ c[iCounter] = new TCanvas(title.Data(),title.Data(),0,0,500,500);
+ }
+ if(iMode == 1) {
+ title = "(normdEdx)P: "; title += binMin; title += " - ";
+ title += binMax; title += "GeV/c";
+ canvasTitle = "normdedxMomentumSlice."; canvasTitle += iCounter;
+ canvasTitle += ".gif";
+ c[iCounter] = new TCanvas(title.Data(),title.Data(),500,0,500,500);
+ }
c[iCounter]->SetFillColor(10); c[iCounter]->SetHighLightColor(10);
gHist[iCounter] = gHistdEdxP->ProjectionY(title.Data(),iBin,iBin+1);
gHist[iCounter]->SetTitle(title.Data());
gHist[iCounter]->SetStats(kFALSE);
- gHist[iCounter]->GetXaxis()->SetRangeUser(0.0,300.);
+ if(iMode == 0)
+ gHist[iCounter]->GetXaxis()->SetRangeUser(0.0,300.);
+ if(iMode == 1)
+ gHist[iCounter]->GetXaxis()->SetRangeUser(-2.0,2.0);
if(gHist[iCounter]->GetEntries() != 0)
c[iCounter]->SetLogy();
gHist[iCounter]->Draw();