fVtxZMean(0),
fVtxRCut(1.),
fVtxZCut(8.),
+ fVtxDeltaZCut(0.1),
fPtMinCosmic(5.),
fRIsolMinCosmic(3.),
fMaxCosmicAngle(0.01),
fTriggerName(0x0),
fh1Xsec(0x0),
fh1Trials(0x0),
+ fh1AvgTrials(0x0),
fh1PtHard(0x0),
fh1PtHardTrials(0x0),
fh1SelectionInfoESD(0x0),
fh1EventCutInfoESD(0),
fh1CentralityESD(0),
fh1Centrality(0),
- fh1ReducedTrigger(0),
fh1RP(0),
+ fh2ReducedTrigger(0),
fh2CentralityTriggerESD(0),
fh2CentralityTrigger(0),
fh2TriggerCount(0x0),
fVtxZMean(0),
fVtxRCut(1.),
fVtxZCut(8.),
+ fVtxDeltaZCut(0.1),
fPtMinCosmic(5.),
fRIsolMinCosmic(3.),
fMaxCosmicAngle(0.01),
fTriggerName(0x0),
fh1Xsec(0x0),
fh1Trials(0x0),
+ fh1AvgTrials(0x0),
fh1PtHard(0x0),
fh1PtHardTrials(0x0),
fh1SelectionInfoESD(0x0),
fh1EventCutInfoESD(0),
fh1CentralityESD(0),
fh1Centrality(0),
- fh1ReducedTrigger(0),
fh1RP(0),
+ fh2ReducedTrigger(0),
fh2CentralityTriggerESD(0),
fh2CentralityTrigger(0),
fh2TriggerCount(0x0),
// construct a poor man average trials
Float_t nEntries = (Float_t)tree->GetTree()->GetEntries();
if(ftrials>=nEntries && nEntries>0.)fAvgTrials = ftrials/nEntries;
+ fh1Trials->Fill("#sum{avg ntrials}",ftrials);
}
return kTRUE;
}
fh1Trials->GetXaxis()->SetBinLabel(1,"#sum{ntrials}");
fHistList->Add(fh1Trials);
- const Int_t nBinPt = 100;
+ fh1AvgTrials = new TH1F("fh1AvgTrials","avg trials root file",1,0,1);
+ fh1AvgTrials->GetXaxis()->SetBinLabel(1,"#sum{avg ntrials}");
+ fHistList->Add(fh1AvgTrials);
+
+ const Int_t nBinPt = 125;
Double_t binLimitsPt[nBinPt+1];
for(Int_t iPt = 0;iPt <= nBinPt;iPt++){
if(iPt == 0){
binLimitsPt[iPt] = 0.0;
}
else {// 1.0
- binLimitsPt[iPt] = binLimitsPt[iPt-1] + 2.5;
+ binLimitsPt[iPt] = binLimitsPt[iPt-1] + 2.;
}
}
fh1RP = new TH1F("fh1RP","RP;#Psi",440, -1.*TMath::Pi(), 2.*TMath::Pi());
fHistList->Add(fh1RP);
- fh1ReducedTrigger = new TH1F("fh1ReducedTrigger","red trigger;red trigger",1<<fNTrigger,-0.5,(1<<fNTrigger)-0.5);
- fHistList->Add(fh1ReducedTrigger);
+ fh2ReducedTrigger = new TH2F("fh2ReducedTrigger","red trigger;red trigger;centrality",1<<fNTrigger,-0.5,(1<<fNTrigger)-0.5,100,-0.5,99.5);
+ fHistList->Add(fh2ReducedTrigger);
fh2CentralityTriggerESD = new TH2F("fh2CentralityTriggerESD",";cent;trigger no",103,-1,102,fNTrigger,-0.5,fNTrigger-0.5);
fHistList->Add(fh2CentralityTriggerESD);
fEventCutInfoESD |= kPhysicsSelectionCut; // other alreay set via IsEventSelected
- fh1EventCutInfoESD->Fill(fEventCutInfoESD);
+ fh1EventCutInfoESD->Fill (fEventCutInfoESD);
if(esdEventSelected) fSelectionInfoESD |= AliAnalysisHelperJetTasks::kVertexIn;
if(esdEventPileUp) fSelectionInfoESD |= AliAnalysisHelperJetTasks::kIsPileUp;
if(esd){
const AliESDVertex *vtxESD = esd->GetPrimaryVertex();
+ const AliESDVertex *vtxESDSPD = esd->GetPrimaryVertexSPD();
esdVtxValid = IsVertexValid(vtxESD);
- esdVtxIn = IsVertexIn(vtxESD);
+ esdVtxIn = IsVertexIn(vtxESD,vtxESDSPD);
if(aodH&&physicsSelection&&fFilterAODCollisions&&aod){
if(fDebug)Printf("%s:%d Centrality %3.3f vtxin %d",(char*)__FILE__,__LINE__,cent,esdVtxIn);
if(cent<=80&&esdVtxIn){
ir |= (1<<it);
}
}
- fh1ReducedTrigger->Fill(ir);
+ fh2ReducedTrigger->Fill(ir,cent);
}
}
}
if(aod){
const AliAODVertex *vtxAOD = aod->GetPrimaryVertex();
+ const AliAODVertex *vtxAODSPD = aod->GetPrimaryVertexSPD();
aodVtxValid = IsVertexValid(vtxAOD);
- aodVtxIn = IsVertexIn(vtxAOD);
+ aodVtxIn = IsVertexIn(vtxAOD,vtxAODSPD);
Float_t zvtx = vtxAOD->GetZ();
Int_t iCl = GetEventClass(aod);
AliAnalysisHelperJetTasks::EventClass(kTRUE,iCl);
Double_t ptHard = 0;
Double_t nTrials = 1; // Trials for MC trigger
- fh1Trials->Fill("#sum{ntrials}",fAvgTrials);
+ fh1AvgTrials->Fill("#sum{avg ntrials}",fAvgTrials);
AliMCEvent* mcEvent = MCEvent();
// AliStack *pStack = 0;
if(mcEvent){
Bool_t AliAnalysisTaskJetServices::IsEventSelected(const AliESDEvent* esd){
if(!esd)return kFALSE;
const AliESDVertex *vtx = esd->GetPrimaryVertex();
- return IsVertexIn(vtx); // vertex in calls vertex valid
+ const AliESDVertex *vtxSPD = esd->GetPrimaryVertex();
+ return IsVertexIn(vtx,vtxSPD); // vertex in calls vertex valid
}
AliAnalysisTaskJetServices::~AliAnalysisTaskJetServices(){
Bool_t AliAnalysisTaskJetServices::IsEventSelected(const AliAODEvent* aod) const {
if(!aod)return kFALSE;
const AliAODVertex *vtx = aod->GetPrimaryVertex();
- return IsVertexIn(vtx); // VertexIn calls VertexValid
+ const AliAODVertex *vtxSPD = aod->GetPrimaryVertexSPD();
+ return IsVertexIn(vtx,vtxSPD); // VertexIn calls VertexValid
}
Bool_t AliAnalysisTaskJetServices::IsVertexValid ( const AliESDVertex* vtx) {
if(vtxName.Contains("TPCVertex"))return kFALSE;
- // no dispersion yet...
+ // no dispersion yet...
/*
TString vtxTitle(vtx->GetTitle());
if(vtxTitle.Contains("vertexer: Z")){
}
-Bool_t AliAnalysisTaskJetServices::IsVertexIn (const AliESDVertex* vtx) {
+Bool_t AliAnalysisTaskJetServices::IsVertexIn (const AliESDVertex* vtx,const AliESDVertex* vtxSPD) {
if(!IsVertexValid(vtx))return kFALSE;
Float_t zvtx = vtx->GetZ();
Float_t yvtx = vtx->GetY();
Float_t xvtx = vtx->GetX();
+ Float_t deltaZ = zvtx - vtxSPD->GetZ();
+ if(fDebug)Printf("%s:%d deltaz %3.3f ",__FILE__,__LINE__,deltaZ);
xvtx -= fVtxXMean;
yvtx -= fVtxYMean;
return kFALSE;
}
fEventCutInfoESD |= kVertexRCut;
+
+
+
+
+ if(TMath::Abs(deltaZ)>fVtxDeltaZCut)return kFALSE;
+ fEventCutInfoESD |= kVertexDeltaZCut;
return kTRUE;
}
-Bool_t AliAnalysisTaskJetServices::IsVertexIn (const AliAODVertex* vtx) const {
+Bool_t AliAnalysisTaskJetServices::IsVertexIn (const AliAODVertex* vtx,const AliAODVertex* vtxSPD) const {
if(!IsVertexValid(vtx))return kFALSE;
Float_t zvtx = vtx->GetZ();
Float_t yvtx = vtx->GetY();
Float_t xvtx = vtx->GetX();
+ Float_t deltaZ = zvtx - vtxSPD->GetZ();
+ if(fDebug)Printf("%s:%d deltaz %3.3f ",__FILE__,__LINE__,deltaZ);
xvtx -= fVtxXMean;
yvtx -= fVtxYMean;
Float_t r2 = yvtx*yvtx+xvtx*xvtx;
Bool_t vertexIn = TMath::Abs(zvtx)<fVtxZCut&&r2<(fVtxRCut*fVtxRCut);
+
+
+ if(TMath::Abs(deltaZ)>fVtxDeltaZCut)vertexIn = kFALSE;
+ if(fDebug)Printf("%s:%d vertexIn %d ",__FILE__,__LINE__,vertexIn);
+
+
return vertexIn;
}