#include "AliTriggerAnalysis.h"
#include "AliAnalysisManager.h"
#include "AliInputEventHandler.h"
+#include "AliAnalysisUtils.h"
#include "AliESDtrackCuts.h"
#include "AliESDUtils.h"
fOutput->SetOwner();
// initialize event statistics counter
- fHEventStat = new TH1F("hEventStat", "Event statistics", 8, 0.0, 8.0);
+ fHEventStat = new TH1F("hEventStat", "Event statistics", 9, 0.0, 9.0);
fHEventStat->GetXaxis()->SetBinLabel(1, "CINT1B");
fHEventStat->GetXaxis()->SetBinLabel(2, "V0AND");
fHEventStat->GetXaxis()->SetBinLabel(3, "Candle");
fHEventStat->GetXaxis()->SetBinLabel(4, "Accepted");
- fHEventStat->GetXaxis()->SetBinLabel(5, "Not Accepted - Total");
+ fHEventStat->GetXaxis()->SetBinLabel(5, "Not Accepted - Total");
fHEventStat->GetXaxis()->SetBinLabel(6, "Not Accepted - No Track Vertex");
fHEventStat->GetXaxis()->SetBinLabel(7, "Not Accepted - Not Enough Contributors");
fHEventStat->GetXaxis()->SetBinLabel(8, "Not Accepted - No Vertex inside |z| < 10 cm");
+ fHEventStat->GetXaxis()->SetBinLabel(9, "Not Accepted - Pile Up Events");
+
fOutput->Add(fHEventStat);
// if the above exit point is not taken, the event is accepted
AliDebugClass(2, Form("Stats: %s", msg.Data()));
if (isSelected) {
- fHEventStat->Fill(3.1);
- Double_t multi = ComputeCentrality((output == 'E'));
- Double_t tracklets = ComputeTracklets();
- fHAEventsVsMulti->Fill(multi);
- fHAEventsVsTracklets->Fill(tracklets);
- if(fHAEventVz) fHAEventVz->Fill(multi,fInputEvent->GetPrimaryVertex()->GetZ());
- if(fHAEventMultiCent) fHAEventMultiCent->Fill(multi,ComputeMultiplicity(output == 'E',fHAEventMultiCent->GetYaxis()->GetTitle()));
- if(fHAEventPlane) fHAEventPlane->Fill(multi,ComputeAngle());
- return output;
+ fHEventStat->Fill(3.1);
+ Double_t multi = ComputeCentrality((output == 'E'));
+ Double_t tracklets = ComputeTracklets();
+ fHAEventsVsMulti->Fill(multi);
+ fHAEventsVsTracklets->Fill(tracklets);
+ if(fHAEventVz) fHAEventVz->Fill(multi,fInputEvent->GetPrimaryVertex()->GetZ());
+ if(fHAEventMultiCent) fHAEventMultiCent->Fill(multi,ComputeMultiplicity(output == 'E',fHAEventMultiCent->GetYaxis()->GetTitle()));
+ if(fHAEventPlane) fHAEventPlane->Fill(multi,ComputeAngle());
+ return output;
} else {
- fHEventStat->Fill(4.1);
- const AliVVertex *vertex = fInputEvent->GetPrimaryVertex();
- if(!vertex) fHEventStat->Fill(5.1);
- else{
- TString title=vertex->GetTitle();
- if( (title.Contains("Z")) || (title.Contains("3D")) ) fHEventStat->Fill(5.1);
+ fHEventStat->Fill(4.1);
+ AliAnalysisUtils *utils = new AliAnalysisUtils();
+ const AliVVertex *vertex = fInputEvent->GetPrimaryVertex();
+ if (!vertex) fHEventStat->Fill(5.1);
+ else {
+ TString title=vertex->GetTitle();
+ if( (title.Contains("Z")) || (title.Contains("3D")) || vertex->GetNContributors()<1.) {
+ if( (title.Contains("Z")) || (title.Contains("3D")) ) fHEventStat->Fill(5.1);
if(vertex->GetNContributors()<1.) fHEventStat->Fill(6.1);
- if(TMath::Abs(vertex->GetZ())>10.) fHEventStat->Fill(7.1);
- }
- return 0;
+ }
+ else if(TMath::Abs(vertex->GetZ())>10.) fHEventStat->Fill(7.1);
+ else if(utils->IsPileUpEvent(fInputEvent)) fHEventStat->Fill(8.1);
+ }
+
+ return 0;
}
}
// Get number of tracklets
//
- Double_t nTr = 100;
- Double_t count = 0.0;
+ Double_t nTr = 100;
+ Double_t count = 0.0;
- if (fInputEvent->InheritsFrom(AliESDEvent::Class())){
- AliESDEvent *esdEvent = (AliESDEvent *)fInputEvent;
- const AliMultiplicity *spdmult = esdEvent->GetMultiplicity();
- nTr = 1.0*spdmult->GetNumberOfTracklets();
- for(Int_t iTr=0; iTr<nTr; iTr++){
+ if (fInputEvent->InheritsFrom(AliESDEvent::Class())){
+ AliESDEvent *esdEvent = (AliESDEvent *)fInputEvent;
+ const AliMultiplicity *spdmult = esdEvent->GetMultiplicity();
+ nTr = 1.0*spdmult->GetNumberOfTracklets();
+ for(Int_t iTr=0; iTr<nTr; iTr++){
Double_t theta=spdmult->GetTheta(iTr);
Double_t eta=-TMath::Log(TMath::Tan(theta/2.));
if(eta>-1.0 && eta<1.0) count++;
- }
- }
- else if (fInputEvent->InheritsFrom(AliAODEvent::Class())) {
- AliAODEvent *aodEvent = (AliAODEvent *)fInputEvent;
- AliAODTracklets *spdmult = aodEvent->GetTracklets();
- nTr = 1.0*spdmult->GetNumberOfTracklets();
- for(Int_t iTr=0; iTr<nTr; iTr++){
+ }
+ }
+ else if (fInputEvent->InheritsFrom(AliAODEvent::Class())) {
+ AliAODEvent *aodEvent = (AliAODEvent *)fInputEvent;
+ AliAODTracklets *spdmult = aodEvent->GetTracklets();
+ nTr = 1.0*spdmult->GetNumberOfTracklets();
+ for(Int_t iTr=0; iTr<nTr; iTr++){
Double_t theta=spdmult->GetTheta(iTr);
Double_t eta=-TMath::Log(TMath::Tan(theta/2.));
if(eta>-1.0 && eta<1.0) count++;
+ }
}
-
- }
- return count;
+ return count;
}
//__________________________________________________________________________________________________
// - 4th argument --> tells if TPC stand-alone vertexes must be accepted
AliRsnCutPrimaryVertex *cutVertex = new AliRsnCutPrimaryVertex("cutVertex", cutV, 1, kFALSE, kFALSE);
if(checkpileup == kTRUE){
- if(SPDpileup == kTRUE)cutVertex->SetCheckPileUp(kTRUE);
- AliRsnCutEventUtils *eventUtils = new AliRsnCutEventUtils("cutEventUtils", kFALSE, kFALSE);
- if(SPDpileup == kFALSE)eventUtils->SetUseMVPlpSelection(kTRUE);
+ AliRsnCutEventUtils *cutEventUtils = new AliRsnCutEventUtils("cutEventUtils", kFALSE, kTRUE);
+ if(SPDpileup == kTRUE) {cutEventUtils->SetRemovePileUppA2013(kTRUE);
+ //cutEventUtils->SetRemoveFirstEvtInChunk(kTRUE);
+ //cutEventUtils->SetUseVertexSelection2013pA(kTRUE);
+ cutEventUtils->SetUseMVPlpSelection(kFALSE);
+ cutEventUtils->SetMinPlpContribSPD(5);
+ }
+ if(SPDpileup == kFALSE){cutEventUtils->SetRemovePileUppA2013(kTRUE);
+ //cutEventUtils->SetRemoveFirstEvtInChunk(kTRUE);
+ //cutEventUtils->SetUseVertexSelection2013pA(kTRUE);
+ cutEventUtils->SetUseMVPlpSelection(kTRUE);
+ cutEventUtils->SetMinPlpContribMV(5);
+ }
}
::Info("AddAnalysisTaskD0", Form("Checking Pile up? %s", (checkpileup ? "yes" : "no") ));
// define and fill cut set for event cut
AliRsnCutSet *eventCuts = new AliRsnCutSet("eventCuts", AliRsnTarget::kEvent);
eventCuts->AddCut(cutVertex);
- eventCuts->SetCutScheme(cutVertex->GetName());
+ //if(SPDpileup == kFALSE) eventCuts->AddCut(cutEventUtils);
+ eventCuts->AddCut(cutEventUtils);
+ eventCuts->SetCutScheme(Form("%s&%s", cutEventUtils->GetName(), cutVertex->GetName() ));
eventCuts->ShowCuts();
eventCuts->PrintSetInfo();
// set cuts in task
if (!isPP) {if(!centortracklets) out->AddAxis(centID, 100, 0.0, 100.0);
- else out->AddAxis(trackletsID, 400, 0.0, 400.0);}
+ else out->AddAxis(trackletsID, 400, -0.5, 400.0);}
else out->AddAxis(centID, 400, 0.0, 400.0);
}
if (!isPP) {if(!centortracklets) out->AddAxis(centID, 100, 0.0, 100.0);
- else out->AddAxis(trackletsID, 400, 0.0, 400.0);}
+ else out->AddAxis(trackletsID, 400, -0.5, 400.0);}
else out->AddAxis(centID, 400, 0.0, 400.0);
// create output
//out->AddAxis(etaID, 100, -1, 1);
if (!isPP) {if(!centortracklets) out->AddAxis(centID, 100, 0.0, 100.0);
- else out->AddAxis(trackletsID, 400, 0.0, 400.0);}
+ else out->AddAxis(trackletsID, 400, -0.5, 400.0);}
else out->AddAxis(centID, 400, 0.0, 400.0);
//out->AddAxis(nsistID, 10, 0, 5);
if (!isPP) {if(!centortracklets) out->AddAxis(centID, 100, 0.0, 100.0);
- else out->AddAxis(trackletsID, 400, 0.0, 400.0);}
+ else out->AddAxis(trackletsID, 400, -0.5, 400.0);}
else out->AddAxis(centID, 400, 0.0, 400.0);
// create output
//out->AddAxis(nsistID, 10, 0, 5);
if (!isPP) {if(!centortracklets) out->AddAxis(centID, 100, 0.0, 100.0);
- else out->AddAxis(trackletsID, 400, 0.0, 400.0);}
+ else out->AddAxis(trackletsID, 400, -0.5, 400.0);}
else out->AddAxis(centID, 400, 0.0, 400.0);
//out->AddAxis(yID, 100, -1, 1);
if (!isPP) {if(!centortracklets) out->AddAxis(centID, 100, 0.0, 100.0);
- else out->AddAxis(trackletsID, 400, 0.0, 400.0);}
+ else out->AddAxis(trackletsID, 400, -0.5, 400.0);}
else out->AddAxis(centID, 400, 0.0, 400.0);
// create output
//out->AddAxis(yID, 100, -1, 1);
if (!isPP) {if(!centortracklets) out->AddAxis(centID, 100, 0.0, 100.0);
- else out->AddAxis(trackletsID, 400, 0.0, 400.0);}
+ else out->AddAxis(trackletsID, 400, -0.5, 400.0);}
else out->AddAxis(centID, 400, 0.0, 400.0);
//out->AddAxis(yID, 100, -1, 1);
if (!isPP) {if(!centortracklets) out->AddAxis(centID, 100, 0.0, 100.0);
- else out->AddAxis(trackletsID, 400, 0.0, 400.0);}
+ else out->AddAxis(trackletsID, 400, -0.5, 400.0);}
else out->AddAxis(centID, 400, 0.0, 400.0);
// create output
//out->AddAxis(yID, 100, -1, 1);
if (!isPP) {if(!centortracklets) out->AddAxis(centID, 100, 0.0, 100.0);
- else out->AddAxis(trackletsID, 400, 0.0, 400.0);}
+ else out->AddAxis(trackletsID, 400, -0.5, 400.0);}
else out->AddAxis(centID, 400, 0.0, 400.0);