//#include "AliESDpidCuts.h"
//#include "AliESDpid.h"
#include "AliCentrality.h"
+#include "AliESDUtils.h"
+#include "AliMultiplicity.h"
class AliMCEventHandler;
class Riostream;
//________________________________________________________________________
AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::AliAnalysisChargedHadronSpectraITSTruncatedMeanTask(const char *name)
:AliAnalysisTaskSE(name),fESD(0),fCuts(0),fCutsMul(0),fMC(0),
-fLowMultiplicity(-1),fUpMultiplicity(-1),fLowCentrality(-10.0),fUpCentrality(-10.0),
+fLowMultiplicity(-1),fUpMultiplicity(-1),fLowCentrality(-10.0),fUpCentrality(-10.0),fSPD(0),fUsePilerejection(0),
fYCut(100.0),fsigmacut(3.0),fnsigmaxy(7.0),fnsigmaz(5.0),fchargeCut(0.0),
fCorrectSDD(0),fCorrectSSD(0),fHIsettings(0),fdovertexrescuts(0),
fK0weight(0),flambdaweight(0),fAntilambdaweight(0),
fHistNtrackwithstandardcuts(0),fHistNtrackwithITSPIDcuts(0),
fHistSignalinTPCKaonforstandardcuts(0),fHistSignalinTPCKaonforITSPIDcuts(0),fHistSignalinTPCAntiKaonforstandardcuts(0),fHistSignalinTPCAntiKaonforITSPIDcuts(0),
fHistSignalinTPCProtonforstandardcuts(0),fHistSignalinTPCProtonforITSPIDcuts(0),fHistSignalinTPCAntiProtonforstandardcuts(0),fHistSignalinTPCAntiProtonforITSPIDcuts(0),
-fHistStandartMul(0),fHistMytrackMul(0),
+fHistStandartMul(0),fHistMytrackMul(0),fHistStandartMulvSPD2(0),
fHistminsignalifPionPPrimary(0),fHistminsignalifKaonPPrimary(0),fHistminsignalifProtonPPrimary(0),fHistminsignalifProtonPPrimaryfake(0),
fHistminsignalifAntiPionPPrimary(0),fHistminsignalifAntiKaonPPrimary(0),fHistminsignalifAntiProtonPPrimary(0),fHistminsignalifAntiProtonPPrimaryfake(0),
fHistminsignalifPionPSecondary(0),fHistminsignalifKaonPSecondary(0),
//UserCreateOutputObject
Printf("AliAnalysisChargedHadronSpectraITSTruncatedMeanTask UserCreateOutputObjects");
flist=new TList();
+ flist->SetOwner();
Float_t ptmax=2.0;
Float_t etamax=1.0;
flist->Add(fHistStandartMul);
fHistMytrackMul=new TH1F("fHistMytrackMul",";Ntracks;counts",300,0,3000);
flist->Add(fHistMytrackMul);
+ fHistStandartMulvSPD2=new TH2F("fHistStandartMulvSPD2",";Ntracks;nSPD2;counts",300,0,3000,300,0,3000);
+ flist->Add(fHistStandartMulvSPD2);
}
else
{
flist->Add(fHistStandartMul);
fHistMytrackMul=new TH1F("fHistMytrackMul",";Ntracks;counts",300,0,300);
flist->Add(fHistMytrackMul);
+ fHistStandartMulvSPD2=new TH2F("fHistStandartMulvSPD2",";Ntracks;nSPD2;counts",300,0,300,300,0,300);
+ flist->Add(fHistStandartMulvSPD2);
}
fTracksCutmonitoring=new TH2F("fTracksCutmonitoring",";cut;pt[GeV/c];N_{entries}",4,0.5,4.5,kPtBins,binsPtDummy);
fTracksCutmonitoring->GetXaxis()->SetBinLabel(1,"TPCin");
fTracksCutmonitoring->GetXaxis()->SetBinLabel(4,"DCA");
flist->Add(fTracksCutmonitoring);
+
+
+
if(!fMC)
{
Bool_t isphysevent=0;
Bool_t isgoodvertex=0;
Bool_t isvxerteinZ=0;
-
fESD = dynamic_cast<AliESDEvent*> (InputEvent());
if (!fESD)
{
}
Float_t refmultiplicity=fCutsMul->CountAcceptedTracks(fESD);
- if(fLowMultiplicity>-1)
- {
- if(refmultiplicity<fLowMultiplicity)
- return;
- }
- if(fUpMultiplicity>-1)
+ if(!fSPD)
{
- if(refmultiplicity>fUpMultiplicity)
- return;
- }
+ if(fLowMultiplicity>-1)
+ {
+ if(refmultiplicity<fLowMultiplicity)
+ return;
+ }
+ if(fUpMultiplicity>-1)
+ {
+ if(refmultiplicity>fUpMultiplicity)
+ return;
+ }
+ }
AliStack* stack=0x0;
Double_t mcXvertex=0.0;
Double_t mcYvertex=0.0;
fHistStats->Fill(1);
}
}
-
+ //Printf("MC 1");
//Good vertex
const AliESDVertex *vertex = 0x0;
if(isphysevent)
else
{
isgoodvertex=1;
- fHistStats->Fill(2);
+ //fHistStats->Fill(2);
fHistZVertexBeforeCut->Fill(vertex ->GetZ());
fHistXYVertexBeforeCut->Fill(vertex ->GetX(),vertex ->GetY());
}
else
{
isgoodvertex=1;
- fHistStats->Fill(2);
+ //fHistStats->Fill(2);
fHistZVertexBeforeCut->Fill(vertex ->GetZ());
fHistXYVertexBeforeCut->Fill(vertex ->GetX(),vertex ->GetY());
}
+ if(isgoodvertex&&fUsePilerejection)
+ {
+ if(fESD->IsPileupFromSPDInMultBins())
+ isgoodvertex=0;
+ }
if(isgoodvertex)
{
if(TMath::Abs(vertex ->GetZ())>10.0)
isvxerteinZ=1;
}
}
+
+
if(fdovertexrescuts&&fMC)
{
- cout<<TMath::Abs(vertex->GetX()-mcXvertex)<<" "<<TMath::Abs(vertex->GetY()-mcYvertex)<<" "<<TMath::Abs(vertex->GetZ()-mcZvertex)<<endl;
- if(TMath::Abs(vertex->GetX()-mcXvertex)>0.015||TMath::Abs(vertex->GetY()-mcYvertex)>0.015||TMath::Abs(vertex->GetZ()-mcZvertex)>0.15)
- isvxerteinZ=0;
+ if(vertex)
+ {
+ cout<<TMath::Abs(vertex->GetX()-mcXvertex)<<" "<<TMath::Abs(vertex->GetY()-mcYvertex)<<" "<<TMath::Abs(vertex->GetZ()-mcZvertex)<<endl;
+ if(TMath::Abs(vertex->GetX()-mcXvertex)>0.015||TMath::Abs(vertex->GetY()-mcYvertex)>0.015||TMath::Abs(vertex->GetZ()-mcZvertex)>0.15)
+ isvxerteinZ=0;
+ }
}
+ Float_t spdCorr=-1.0;
+ if(isgoodvertex)
+ {
+ const AliMultiplicity *mult = fESD->GetMultiplicity();
+ Float_t nClusters[6]={0.0,0.0,0.0,0.0,0.0,0.0};
+ for(Int_t ilay=0; ilay<6; ilay++)
+ {
+ nClusters[ilay] = (Float_t)mult->GetNumberOfITSClusters(ilay);
+ }
+ spdCorr = AliESDUtils::GetCorrSPD2(nClusters[1],vertex->GetZ());
+ if(fSPD)
+ {
+ if(fLowMultiplicity>-1)
+ {
+ if(((Int_t)spdCorr)<fLowMultiplicity)
+ {
+ PostData(1, flist);
+ return;
+ }
+ }
+ if(fUpMultiplicity>-1)
+ {
+ if(((Int_t)spdCorr)>fUpMultiplicity)
+ {
+ PostData(1, flist);
+ return;
+ }
+ }
+ }
+ fHistStats->Fill(2);
+ }
+
+ //Printf("MC 2");
Int_t fMCmult=0;
- if(stack)//Looping over MC information of all events
+ if(stack&&fMC)//Looping over MC information of all events
{
Float_t minpt=0.0;
Float_t maxpt=0.0;
Float_t mineta=0.0;
Float_t maxeta=0.0;
-
+ //Printf("MC 12");
fCutsMul->GetPtRange(minpt,maxpt);
fCutsMul->GetEtaRange(mineta,maxeta);
fHistStats->Fill(8);
if (particleMC->Pt()>2.0)
continue;
//Printf("%d aa",imc);
-
+ // Printf("MC 22");
if(pdgcodeMC==211)
fHistminsignalifPionPMCPrimaryBeforeEventCuts->Fill(particleMC->Pt());
if(pdgcodeMC==-211)
}
}
- }
-
+ }
+ else if(fMC)
+ return;
+ else
+ Printf("Data mode \n");
+
if(!(isphysevent&&isgoodvertex&&isvxerteinZ))
{
//Printf("No Good event.........\n");
return;
}
+
+
+ fHistStandartMulvSPD2->Fill(refmultiplicity,spdCorr);
fHistStats->Fill(3);
fHistZVertexAfterCut->Fill(vertex ->GetZ());
if(fMC)
label=trackESD->GetLabel();
//if(label<0)
- // Printf("label %d %f %f %f %f %d %f %f\n",label,p,pt,eta,chi2,nTPCclusters,dcaxy,dcaz);
+ // Printf("label %d %f %f %f %f %d %f %f\n",label,p,pt,eta,chi2,nTPCclusters,dcaxy,dcaz);
Int_t pdgcode=0;
Int_t primary=0;
Double_t chargeMC=1.0;
Int_t nosignaL=-1;
if(nSSDSDD==3)
{
- Double_t tmp2QESD[3];
+ Double_t tmp2QESD[3]={-1.0,-1.0,-1.0};
Int_t iLnotZero=0;
for (int iL=0;iL<4;iL++)
{
if(nSSDSDD==4)
fHistMysignalminusESD->Fill((signaltouse-trackESD->GetITSsignal())/signaltouse);
}
+ //Printf("Select on clean \n");
if(TMath::Abs(yforpion)<=fYCut)
{
Float_t weight=1.0;
}
else if(primary&&pdgcode==-11)
{
- fPrimaryElectronsMother->Fill(stack->Particle(particle2->GetFirstMother())->GetPdgCode());
+ Printf("%d Mom",particle2->GetFirstMother());
+ if(particle2->GetFirstMother()>-1)
+ fPrimaryElectronsMother->Fill(TMath::Abs(stack->Particle(particle2->GetFirstMother())->GetPdgCode()));
+ else
+ fPrimaryElectronsMother->Fill(-1);
fAntiElectronsource->Fill(pt,0);
}
else if(primary&&pdgcode==-13)
}
else if(primary&&pdgcode==11)
{
- fPrimaryElectronsMother->Fill(stack->Particle(particle2->GetFirstMother())->GetPdgCode());
+ Printf("%d Mom",particle2->GetFirstMother());
+ if(particle2->GetFirstMother()>-1)
+ fPrimaryElectronsMother->Fill(TMath::Abs(stack->Particle(particle2->GetFirstMother())->GetPdgCode()));
+ else
+ fPrimaryElectronsMother->Fill(-1);
fElectronsource->Fill(TMath::Abs(pt),0);
}
else if(primary&&pdgcode==13)
fLowMultiplicity=low;
fUpMultiplicity=up;
}
-}
\ No newline at end of file
+}