// ROOT object to store the candidates, plus a couple of histograms filled on
// a per-event basis for storing variables too numerous to put in a tree.
//
-// --- Adapted to look for lambdas as well, using code from
-// AliAnalysisTaskCheckPerformanceStrange.cxx
//
// --- Algorithm Description
// 1. Loop over primaries in stack to acquire generated charged Xi
-// 2. Loop over stack to find V0s, fill TH3Fs "PrimRawPt"s for Efficiency
+// 2. Loop over stack to find Cascades, fill TH3Fs "PrimRawPt"s for Efficiency
// 3. Perform Physics Selection
// 4. Perform Primary Vertex |z|<10cm selection
-// 5. Perform Primary Vertex NoTPCOnly vertexing selection (>0 contrib.)
+// 5. Perform Primary Vertex NoTPCOnly vertexing selection
// 6. Perform Pileup Rejection
// 7. Analysis Loops:
// 7a. Fill TH3Fs "PrimAnalysisPt" for control purposes only
-// 7b. Fill TTree object with V0 information, candidates
//
// Please Report Any Bugs!
//
#include "AliMCEvent.h"
#include "AliStack.h"
+#include "AliV0vertexer.h"
+#include "AliCascadeVertexer.h"
+
#include "AliCFContainer.h"
#include "AliMultiplicity.h"
#include "AliAODMCParticle.h"
#include "AliAODcascade.h"
#include "AliESDUtils.h"
#include "AliGenEventHeader.h"
+#include "AliAnalysisUtils.h"
#include "AliAnalysisTaskExtractCascade.h"
ClassImp(AliAnalysisTaskExtractCascade)
AliAnalysisTaskExtractCascade::AliAnalysisTaskExtractCascade()
- : AliAnalysisTaskSE(), fListHist(0), fTreeCascade(0), fPIDResponse(0), fESDtrackCuts(0),
+ : AliAnalysisTaskSE(), fListHist(0), fTreeCascade(0), fPIDResponse(0), fESDtrackCuts(0), fUtils(0),
fkIsNuclear ( kFALSE ),
- fkLowEnergyPP ( kFALSE ),
+ fkSwitchINT7 ( kFALSE ),
+ fCentralityEstimator("V0M"),
+ fkpAVertexSelection( kFALSE ),
+ fEtaRefMult ( 0.5 ),
+//------------------------------------------------
+// Tree Variables
+//------------------------------------------------
+
+ fTreeCascVarCharge(0),
+ fTreeCascVarMassAsXi(0),
+ fTreeCascVarMassAsOmega(0),
+ fTreeCascVarPt(0),
+ fTreeCascVarPtMC(0),
+ fTreeCascVarRapMC(0),
+ fTreeCascVarRapXi(0),
+ fTreeCascVarRapOmega(0),
+ fTreeCascVarNegEta(0),
+ fTreeCascVarPosEta(0),
+ fTreeCascVarBachEta(0),
+ fTreeCascVarDCACascDaughters(0),
+ fTreeCascVarDCABachToPrimVtx(0),
+ fTreeCascVarDCAV0Daughters(0),
+ fTreeCascVarDCAV0ToPrimVtx(0),
+ fTreeCascVarDCAPosToPrimVtx(0),
+ fTreeCascVarDCANegToPrimVtx(0),
+ fTreeCascVarCascCosPointingAngle(0),
+ fTreeCascVarCascRadius(0),
+ fTreeCascVarV0Mass(0),
+ fTreeCascVarV0CosPointingAngle(0),
+ fTreeCascVarV0Radius(0),
+ fTreeCascVarLeastNbrClusters(0),
+ fTreeCascVarMultiplicity(0),
+ fTreeCascVarMultiplicityV0A(0),
+ fTreeCascVarMultiplicityZNA(0),
+ fTreeCascVarMultiplicityTRK(0),
+ fTreeCascVarMultiplicitySPD(0),
+ fTreeCascVarDistOverTotMom(0),
+ fTreeCascVarPID(0),
+ fTreeCascVarPIDBachelor(0),
+ fTreeCascVarPIDNegative(0),
+ fTreeCascVarPIDPositive(0),
+ fTreeCascVarPosTransMom(0),
+ fTreeCascVarNegTransMom(0),
+ fTreeCascVarPosTransMomMC(0),
+ fTreeCascVarNegTransMomMC(0),
+ fTreeCascVarNegNSigmaPion(0),
+ fTreeCascVarNegNSigmaProton(0),
+ fTreeCascVarPosNSigmaPion(0),
+ fTreeCascVarPosNSigmaProton(0),
+ fTreeCascVarBachNSigmaPion(0),
+ fTreeCascVarBachNSigmaKaon(0),
//------------------------------------------------
// HISTOGRAMS
fHistMultiplicity(0),
fHistMultiplicityNoTPCOnly(0),
fHistMultiplicityNoTPCOnlyNoPileup(0),
+
+//V0A Centrality
+fHistMultiplicityV0ABeforeTrigSel(0),
+fHistMultiplicityV0AForTrigEvt(0),
+fHistMultiplicityV0A(0),
+fHistMultiplicityV0ANoTPCOnly(0),
+fHistMultiplicityV0ANoTPCOnlyNoPileup(0),
+
+//ZNA Centrality
+fHistMultiplicityZNABeforeTrigSel(0),
+fHistMultiplicityZNAForTrigEvt(0),
+fHistMultiplicityZNA(0),
+fHistMultiplicityZNANoTPCOnly(0),
+fHistMultiplicityZNANoTPCOnlyNoPileup(0),
+
+//TRK Centrality
+fHistMultiplicityTRKBeforeTrigSel(0),
+fHistMultiplicityTRKForTrigEvt(0),
+fHistMultiplicityTRK(0),
+fHistMultiplicityTRKNoTPCOnly(0),
+fHistMultiplicityTRKNoTPCOnlyNoPileup(0),
+
+//SPD Centrality
+fHistMultiplicitySPDBeforeTrigSel(0),
+fHistMultiplicitySPDForTrigEvt(0),
+fHistMultiplicitySPD(0),
+fHistMultiplicitySPDNoTPCOnly(0),
+fHistMultiplicitySPDNoTPCOnlyNoPileup(0),
+
fHistPVx(0),
fHistPVy(0),
fHistPVz(0),
}
AliAnalysisTaskExtractCascade::AliAnalysisTaskExtractCascade(const char *name)
- : AliAnalysisTaskSE(name), fListHist(0), fTreeCascade(0), fPIDResponse(0), fESDtrackCuts(0),
+ : AliAnalysisTaskSE(name), fListHist(0), fTreeCascade(0), fPIDResponse(0), fESDtrackCuts(0), fUtils(0),
fkIsNuclear ( kFALSE ),
- fkLowEnergyPP ( kFALSE ),
-
+ fkSwitchINT7 ( kFALSE ),
+ fCentralityEstimator("V0M"),
+ fkpAVertexSelection( kFALSE ),
+ fEtaRefMult ( 0.5 ),
+//------------------------------------------------
+// Tree Variables
+//------------------------------------------------
+
+ fTreeCascVarCharge(0),
+ fTreeCascVarMassAsXi(0),
+ fTreeCascVarMassAsOmega(0),
+ fTreeCascVarPt(0),
+ fTreeCascVarPtMC(0),
+ fTreeCascVarRapMC(0),
+ fTreeCascVarRapXi(0),
+ fTreeCascVarRapOmega(0),
+ fTreeCascVarNegEta(0),
+ fTreeCascVarPosEta(0),
+ fTreeCascVarBachEta(0),
+ fTreeCascVarDCACascDaughters(0),
+ fTreeCascVarDCABachToPrimVtx(0),
+ fTreeCascVarDCAV0Daughters(0),
+ fTreeCascVarDCAV0ToPrimVtx(0),
+ fTreeCascVarDCAPosToPrimVtx(0),
+ fTreeCascVarDCANegToPrimVtx(0),
+ fTreeCascVarCascCosPointingAngle(0),
+ fTreeCascVarCascRadius(0),
+ fTreeCascVarV0Mass(0),
+ fTreeCascVarV0CosPointingAngle(0),
+ fTreeCascVarV0Radius(0),
+ fTreeCascVarLeastNbrClusters(0),
+ fTreeCascVarMultiplicity(0),
+ fTreeCascVarMultiplicityV0A(0),
+ fTreeCascVarMultiplicityZNA(0),
+ fTreeCascVarMultiplicityTRK(0),
+ fTreeCascVarMultiplicitySPD(0),
+ fTreeCascVarDistOverTotMom(0),
+ fTreeCascVarPID(0),
+ fTreeCascVarPIDBachelor(0),
+ fTreeCascVarPIDNegative(0),
+ fTreeCascVarPIDPositive(0),
+ fTreeCascVarPosTransMom(0),
+ fTreeCascVarNegTransMom(0),
+ fTreeCascVarPosTransMomMC(0),
+ fTreeCascVarNegTransMomMC(0),
+ fTreeCascVarNegNSigmaPion(0),
+ fTreeCascVarNegNSigmaProton(0),
+ fTreeCascVarPosNSigmaPion(0),
+ fTreeCascVarPosNSigmaProton(0),
+ fTreeCascVarBachNSigmaPion(0),
+ fTreeCascVarBachNSigmaKaon(0),
+
//------------------------------------------------
// HISTOGRAMS
// --- Filled on an Event-by-event basis
fHistMultiplicity(0),
fHistMultiplicityNoTPCOnly(0),
fHistMultiplicityNoTPCOnlyNoPileup(0),
+
+//V0A Centrality
+fHistMultiplicityV0ABeforeTrigSel(0),
+fHistMultiplicityV0AForTrigEvt(0),
+fHistMultiplicityV0A(0),
+fHistMultiplicityV0ANoTPCOnly(0),
+fHistMultiplicityV0ANoTPCOnlyNoPileup(0),
+
+//ZNA Centrality
+fHistMultiplicityZNABeforeTrigSel(0),
+fHistMultiplicityZNAForTrigEvt(0),
+fHistMultiplicityZNA(0),
+fHistMultiplicityZNANoTPCOnly(0),
+fHistMultiplicityZNANoTPCOnlyNoPileup(0),
+
+//TRK Centrality
+fHistMultiplicityTRKBeforeTrigSel(0),
+fHistMultiplicityTRKForTrigEvt(0),
+fHistMultiplicityTRK(0),
+fHistMultiplicityTRKNoTPCOnly(0),
+fHistMultiplicityTRKNoTPCOnlyNoPileup(0),
+
+//SPD Centrality
+fHistMultiplicitySPDBeforeTrigSel(0),
+fHistMultiplicitySPDForTrigEvt(0),
+fHistMultiplicitySPD(0),
+fHistMultiplicitySPDNoTPCOnly(0),
+fHistMultiplicitySPDNoTPCOnlyNoPileup(0),
+
fHistPVx(0),
fHistPVy(0),
fHistPVz(0),
fHistPVzAnalysis(0)
{
// Constructor
+
+ //Set Variables for re-running the cascade vertexers (as done for MS paper)
+
+ // New Loose : 1st step for the 7 TeV pp analysis
+ /*
+ fV0Sels[0] = 33. ; // max allowed chi2
+ fV0Sels[1] = 0.02; // min allowed impact parameter for the 1st daughter (LHC09a4 : 0.05)
+ fV0Sels[2] = 0.02; // min allowed impact parameter for the 2nd daughter (LHC09a4 : 0.05)
+ fV0Sels[3] = 2.0 ; // max allowed DCA between the daughter tracks (LHC09a4 : 0.5)
+ fV0Sels[4] = 0.95; // min allowed cosine of V0's pointing angle (LHC09a4 : 0.99)
+ fV0Sels[5] = 1.0 ; // min radius of the fiducial volume (LHC09a4 : 0.2)
+ fV0Sels[6] = 100. ; // max radius of the fiducial volume (LHC09a4 : 100.0)
+
+ fCascSels[0] = 33. ; // max allowed chi2 (same as PDC07)
+ fCascSels[1] = 0.05 ; // min allowed V0 impact parameter (PDC07 : 0.05 / LHC09a4 : 0.025 )
+ fCascSels[2] = 0.010; // "window" around the Lambda mass (PDC07 : 0.008 / LHC09a4 : 0.010 )
+ fCascSels[3] = 0.03 ; // min allowed bachelor's impact parameter (PDC07 : 0.035 / LHC09a4 : 0.025 )
+ fCascSels[4] = 2.0 ; // max allowed DCA between the V0 and the bachelor (PDC07 : 0.1 / LHC09a4 : 0.2 )
+ fCascSels[5] = 0.95 ; // min allowed cosine of the cascade pointing angle (PDC07 : 0.9985 / LHC09a4 : 0.998 )
+ fCascSels[6] = 0.4 ; // min radius of the fiducial volume (PDC07 : 0.9 / LHC09a4 : 0.2 )
+ fCascSels[7] = 100. ; // max radius of the fiducial volume (PDC07 : 100 / LHC09a4 : 100 )
+ */
// Output slot #0 writes into a TList container (Cascade)
DefineOutput(1, TList::Class());
DefineOutput(2, TTree::Class());
delete fESDtrackCuts;
fESDtrackCuts = 0x0;
}
+ if (fUtils){
+ delete fUtils;
+ fUtils = 0x0;
+ }
}
/*21*/ fTreeCascade->Branch("fTreeCascVarLeastNbrClusters",&fTreeCascVarLeastNbrClusters,"fTreeCascVarLeastNbrClusters/I");
//-----------MULTIPLICITY-INFO--------------------
/*22*/ fTreeCascade->Branch("fTreeCascVarMultiplicity",&fTreeCascVarMultiplicity,"fTreeCascVarMultiplicity/I");
+/*22*/ fTreeCascade->Branch("fTreeCascVarMultiplicityV0A",&fTreeCascVarMultiplicityV0A,"fTreeCascVarMultiplicityV0A/I");
+/*22*/ fTreeCascade->Branch("fTreeCascVarMultiplicityZNA",&fTreeCascVarMultiplicityZNA,"fTreeCascVarMultiplicityZNA/I");
+/*22*/ fTreeCascade->Branch("fTreeCascVarMultiplicityTRK",&fTreeCascVarMultiplicityTRK,"fTreeCascVarMultiplicityTRK/I");
+/*22*/ fTreeCascade->Branch("fTreeCascVarMultiplicitySPD",&fTreeCascVarMultiplicitySPD,"fTreeCascVarMultiplicitySPD/I");
//-----------DECAY-LENGTH-INFO--------------------
/*23*/ fTreeCascade->Branch("fTreeCascVarDistOverTotMom",&fTreeCascVarDistOverTotMom,"fTreeCascVarDistOverTotMom/F");
//------------------------------------------------
// Multiplicity
- if(! fESDtrackCuts ){
- fESDtrackCuts = new AliESDtrackCuts();
- }
+ if(! fESDtrackCuts ){
+ fESDtrackCuts = new AliESDtrackCuts();
+ }
+ if(! fUtils ){
+ fUtils = new AliAnalysisUtils();
+ }
//------------------------------------------------
// V0 Multiplicity Histograms
200, 0, 200);
fListHist->Add(fHistMultiplicityNoTPCOnlyNoPileup);
}
+
+
+ //V0A Centrality (if PbPb / pPb)
+ if(! fHistMultiplicityV0ABeforeTrigSel) {
+ fHistMultiplicityV0ABeforeTrigSel = new TH1F("fHistMultiplicityV0ABeforeTrigSel",
+ "Centrality Distribution: V0A;V0A Centrality;Events",
+ 200, 0, 200);
+ fListHist->Add(fHistMultiplicityV0ABeforeTrigSel);
+ }
+ if(! fHistMultiplicityV0AForTrigEvt) {
+ fHistMultiplicityV0AForTrigEvt = new TH1F("fHistMultiplicityV0AForTrigEvt",
+ "Centrality Distribution: V0A;V0A Centrality;Events",
+ 200, 0, 200);
+ fListHist->Add(fHistMultiplicityV0AForTrigEvt);
+ }
+ if(! fHistMultiplicityV0A) {
+ fHistMultiplicityV0A = new TH1F("fHistMultiplicityV0A",
+ "Centrality Distribution: V0A;V0A Centrality;Events",
+ 200, 0, 200);
+ fListHist->Add(fHistMultiplicityV0A);
+ }
+ if(! fHistMultiplicityV0ANoTPCOnly) {
+ fHistMultiplicityV0ANoTPCOnly = new TH1F("fHistMultiplicityV0ANoTPCOnly",
+ "Centrality Distribution: V0A;V0A Centrality;Events",
+ 200, 0, 200);
+ fListHist->Add(fHistMultiplicityV0ANoTPCOnly);
+ }
+ if(! fHistMultiplicityV0ANoTPCOnlyNoPileup) {
+ fHistMultiplicityV0ANoTPCOnlyNoPileup = new TH1F("fHistMultiplicityV0ANoTPCOnlyNoPileup",
+ "Centrality Distribution: V0A;V0A Centrality;Events",
+ 200, 0, 200);
+ fListHist->Add(fHistMultiplicityV0ANoTPCOnlyNoPileup);
+ }
+
+ //ZNA Centrality (if PbPb / pPb)
+ if(! fHistMultiplicityZNABeforeTrigSel) {
+ fHistMultiplicityZNABeforeTrigSel = new TH1F("fHistMultiplicityZNABeforeTrigSel",
+ "Centrality Distribution: ZNA;ZNA Centrality;Events",
+ 200, 0, 200);
+ fListHist->Add(fHistMultiplicityZNABeforeTrigSel);
+ }
+ if(! fHistMultiplicityZNAForTrigEvt) {
+ fHistMultiplicityZNAForTrigEvt = new TH1F("fHistMultiplicityZNAForTrigEvt",
+ "Centrality Distribution: ZNA;ZNA Centrality;Events",
+ 200, 0, 200);
+ fListHist->Add(fHistMultiplicityZNAForTrigEvt);
+ }
+ if(! fHistMultiplicityZNA) {
+ fHistMultiplicityZNA = new TH1F("fHistMultiplicityZNA",
+ "Centrality Distribution: ZNA;ZNA Centrality;Events",
+ 200, 0, 200);
+ fListHist->Add(fHistMultiplicityZNA);
+ }
+ if(! fHistMultiplicityZNANoTPCOnly) {
+ fHistMultiplicityZNANoTPCOnly = new TH1F("fHistMultiplicityZNANoTPCOnly",
+ "Centrality Distribution: ZNA;ZNA Centrality;Events",
+ 200, 0, 200);
+ fListHist->Add(fHistMultiplicityZNANoTPCOnly);
+ }
+ if(! fHistMultiplicityZNANoTPCOnlyNoPileup) {
+ fHistMultiplicityZNANoTPCOnlyNoPileup = new TH1F("fHistMultiplicityZNANoTPCOnlyNoPileup",
+ "Centrality Distribution: ZNA;ZNA Centrality;Events",
+ 200, 0, 200);
+ fListHist->Add(fHistMultiplicityZNANoTPCOnlyNoPileup);
+ }
+
+ //TRK Centrality (if PbPb / pPb)
+ if(! fHistMultiplicityTRKBeforeTrigSel) {
+ fHistMultiplicityTRKBeforeTrigSel = new TH1F("fHistMultiplicityTRKBeforeTrigSel",
+ "Centrality Distribution: TRK;TRK Centrality;Events",
+ 200, 0, 200);
+ fListHist->Add(fHistMultiplicityTRKBeforeTrigSel);
+ }
+ if(! fHistMultiplicityTRKForTrigEvt) {
+ fHistMultiplicityTRKForTrigEvt = new TH1F("fHistMultiplicityTRKForTrigEvt",
+ "Centrality Distribution: TRK;TRK Centrality;Events",
+ 200, 0, 200);
+ fListHist->Add(fHistMultiplicityTRKForTrigEvt);
+ }
+ if(! fHistMultiplicityTRK) {
+ fHistMultiplicityTRK = new TH1F("fHistMultiplicityTRK",
+ "Centrality Distribution: TRK;TRK Centrality;Events",
+ 200, 0, 200);
+ fListHist->Add(fHistMultiplicityTRK);
+ }
+ if(! fHistMultiplicityTRKNoTPCOnly) {
+ fHistMultiplicityTRKNoTPCOnly = new TH1F("fHistMultiplicityTRKNoTPCOnly",
+ "Centrality Distribution: TRK;TRK Centrality;Events",
+ 200, 0, 200);
+ fListHist->Add(fHistMultiplicityTRKNoTPCOnly);
+ }
+ if(! fHistMultiplicityTRKNoTPCOnlyNoPileup) {
+ fHistMultiplicityTRKNoTPCOnlyNoPileup = new TH1F("fHistMultiplicityTRKNoTPCOnlyNoPileup",
+ "Centrality Distribution: TRK;TRK Centrality;Events",
+ 200, 0, 200);
+ fListHist->Add(fHistMultiplicityTRKNoTPCOnlyNoPileup);
+ }
+
+ //SPD Centrality (if PbPb / pPb)
+ if(! fHistMultiplicitySPDBeforeTrigSel) {
+ fHistMultiplicitySPDBeforeTrigSel = new TH1F("fHistMultiplicitySPDBeforeTrigSel",
+ "Centrality Distribution: SPD;SPD Centrality;Events",
+ 200, 0, 200);
+ fListHist->Add(fHistMultiplicitySPDBeforeTrigSel);
+ }
+ if(! fHistMultiplicitySPDForTrigEvt) {
+ fHistMultiplicitySPDForTrigEvt = new TH1F("fHistMultiplicitySPDForTrigEvt",
+ "Centrality Distribution: SPD;SPD Centrality;Events",
+ 200, 0, 200);
+ fListHist->Add(fHistMultiplicitySPDForTrigEvt);
+ }
+ if(! fHistMultiplicitySPD) {
+ fHistMultiplicitySPD = new TH1F("fHistMultiplicitySPD",
+ "Centrality Distribution: SPD;SPD Centrality;Events",
+ 200, 0, 200);
+ fListHist->Add(fHistMultiplicitySPD);
+ }
+ if(! fHistMultiplicitySPDNoTPCOnly) {
+ fHistMultiplicitySPDNoTPCOnly = new TH1F("fHistMultiplicitySPDNoTPCOnly",
+ "Centrality Distribution: SPD;SPD Centrality;Events",
+ 200, 0, 200);
+ fListHist->Add(fHistMultiplicitySPDNoTPCOnly);
+ }
+ if(! fHistMultiplicitySPDNoTPCOnlyNoPileup) {
+ fHistMultiplicitySPDNoTPCOnlyNoPileup = new TH1F("fHistMultiplicitySPDNoTPCOnlyNoPileup",
+ "Centrality Distribution: SPD;SPD Centrality;Events",
+ 200, 0, 200);
+ fListHist->Add(fHistMultiplicitySPDNoTPCOnlyNoPileup);
+ }
+
//----------------------------------
// Primary Vertex Position Histos
//------------------------------------------------
//REVISED multiplicity estimator after 'multiplicity day' (2011)
- Int_t lMultiplicity = -100;
+ Int_t lMultiplicity = -100;
+ Int_t lMultiplicityV0A = -100;
+ Int_t lMultiplicityZNA = -100;
+ Int_t lMultiplicityTRK = -100;
+ Int_t lMultiplicitySPD = -100;
//testing purposes
- if(fkIsNuclear == kFALSE) lMultiplicity = fESDtrackCuts->GetReferenceMultiplicity(lESDevent, AliESDtrackCuts::kTrackletsITSTPC,0.5);
+ if(fkIsNuclear == kFALSE) lMultiplicity = fESDtrackCuts->GetReferenceMultiplicity(lESDevent, AliESDtrackCuts::kTrackletsITSTPC, fEtaRefMult );
//---> If this is a nuclear collision, then go nuclear on "multiplicity" variable...
//---> Warning: Experimental
if(fkIsNuclear == kTRUE){
AliCentrality* centrality;
centrality = lESDevent->GetCentrality();
- lMultiplicity = ( ( Int_t ) ( centrality->GetCentralityPercentile( "V0M" ) ) );
+ lMultiplicity = ( ( Int_t ) ( centrality->GetCentralityPercentile( fCentralityEstimator.Data() ) ) );
+ lMultiplicityV0A = ( ( Int_t ) ( centrality->GetCentralityPercentile( "V0A" ) ) );
+ lMultiplicityZNA = ( ( Int_t ) ( centrality->GetCentralityPercentile( "ZNA" ) ) );
+ lMultiplicityTRK = ( ( Int_t ) ( centrality->GetCentralityPercentile( "TRK" ) ) );
+ lMultiplicitySPD = ( ( Int_t ) ( centrality->GetCentralityPercentile( "CL1" ) ) );
if (centrality->GetQuality()>1) {
PostData(1, fListHist);
PostData(2, fTreeCascade);
//---> pp case......: GetReferenceMultiplicity
//---> Pb-Pb case...: Centrality by V0M
- fTreeCascVarMultiplicity = lMultiplicity;
-
- fHistV0MultiplicityBeforeTrigSel->Fill ( lESDevent->GetNumberOfV0s() );
- fHistMultiplicityBeforeTrigSel->Fill ( lMultiplicity );
-
+ fTreeCascVarMultiplicity = lMultiplicity;
+ fTreeCascVarMultiplicityV0A = lMultiplicityV0A;
+ fTreeCascVarMultiplicityZNA = lMultiplicityZNA;
+ fTreeCascVarMultiplicityTRK = lMultiplicityTRK;
+ fTreeCascVarMultiplicitySPD = lMultiplicitySPD;
+
+ fHistV0MultiplicityBeforeTrigSel->Fill ( lESDevent->GetNumberOfV0s() );
+ fHistMultiplicityBeforeTrigSel->Fill ( lMultiplicity );
+ fHistMultiplicityV0ABeforeTrigSel->Fill ( lMultiplicityV0A );
+ fHistMultiplicityZNABeforeTrigSel->Fill ( lMultiplicityZNA );
+ fHistMultiplicityTRKBeforeTrigSel->Fill ( lMultiplicityTRK );
+ fHistMultiplicitySPDBeforeTrigSel->Fill ( lMultiplicitySPD );
+
//------------------------------------------------
// Physics Selection
//------------------------------------------------
Bool_t isSelected = 0;
isSelected = (maskIsSelected & AliVEvent::kMB) == AliVEvent::kMB;
- //pp at 2.76TeV: special case, ignore FastOnly
- if ( (fkLowEnergyPP == kTRUE) && (maskIsSelected& AliVEvent::kFastOnly) ){
- PostData(1, fListHist);
- PostData(2, fTreeCascade);
- return;
- }
+ //pA triggering: CINT7
+ if( fkSwitchINT7 ) isSelected = (maskIsSelected & AliVEvent::kINT7) == AliVEvent::kINT7;
+
//Standard Min-Bias Selection
if ( ! isSelected ) {
PostData(1, fListHist);
return;
}
+//------------------------------------------------
+// Rerun cascade vertexer!
+//------------------------------------------------
+/*
+ lESDevent->ResetCascades();
+ lESDevent->ResetV0s();
+
+ AliV0vertexer lV0vtxer;
+ AliCascadeVertexer lCascVtxer;
+
+ lV0vtxer.SetDefaultCuts(fV0Sels);
+ lCascVtxer.SetDefaultCuts(fCascSels);
+
+ lV0vtxer.Tracks2V0vertices(lESDevent);
+ lCascVtxer.V0sTracks2CascadeVertices(lESDevent);
+*/
//------------------------------------------------
// After Trigger Selection
//------------------------------------------------
//Set variable for filling tree afterwards!
fHistV0MultiplicityForTrigEvt->Fill(lNumberOfV0s);
fHistMultiplicityForTrigEvt->Fill ( lMultiplicity );
+ fHistMultiplicityV0AForTrigEvt ->Fill( lMultiplicityV0A );
+ fHistMultiplicityZNAForTrigEvt ->Fill( lMultiplicityZNA );
+ fHistMultiplicityTRKForTrigEvt ->Fill( lMultiplicityTRK );
+ fHistMultiplicitySPDForTrigEvt ->Fill( lMultiplicitySPD );
//------------------------------------------------
// Getting: Primary Vertex + MagField Info
fHistPVy->Fill( lPrimaryVtxPosition[1] );
fHistPVz->Fill( lPrimaryVtxPosition[2] );
-//------------------------------------------------
-// Primary Vertex Z position: SKIP
-//------------------------------------------------
-
- if(TMath::Abs(lBestPrimaryVtxPos[2]) > 10.0 ) {
- AliWarning("Pb / | Z position of Best Prim Vtx | > 10.0 cm ... return !");
- PostData(1, fListHist);
- PostData(2, fTreeCascade);
- return;
- }
-
- lMagneticField = lESDevent->GetMagneticField( );
- fHistV0MultiplicityForSelEvt ->Fill( lNumberOfV0s );
- fHistMultiplicity->Fill(lMultiplicity);
+ //------------------------------------------------
+ // Primary Vertex Requirements Section:
+ // ---> pp and PbPb: Only requires |z|<10cm
+ // ---> pPb: all requirements checked at this stage
+ //------------------------------------------------
+
+ //Roberto's PV selection criteria, implemented 17th April 2013
+
+ /* vertex selection */
+ Bool_t fHasVertex = kFALSE;
+
+ const AliESDVertex *vertex = lESDevent->GetPrimaryVertexTracks();
+ if (vertex->GetNContributors() < 1) {
+ vertex = lESDevent->GetPrimaryVertexSPD();
+ if (vertex->GetNContributors() < 1) fHasVertex = kFALSE;
+ else fHasVertex = kTRUE;
+ TString vtxTyp = vertex->GetTitle();
+ Double_t cov[6]={0};
+ vertex->GetCovarianceMatrix(cov);
+ Double_t zRes = TMath::Sqrt(cov[5]);
+ if (vtxTyp.Contains("vertexer:Z") && (zRes>0.25)) fHasVertex = kFALSE;
+ }
+ else fHasVertex = kTRUE;
+
+ //Is First event in chunk rejection: Still present!
+ if(fkpAVertexSelection==kTRUE && fHasVertex == kFALSE) {
+ AliWarning("Pb / | PV does not satisfy selection criteria!");
+ PostData(1, fListHist);
+ PostData(2, fTreeCascade);
+ return;
+ }
+
+ //Is First event in chunk rejection: Still present!
+ if(fkpAVertexSelection==kTRUE && fUtils->IsFirstEventInChunk(lESDevent)) {
+ AliWarning("Pb / | This is the first event in the chunk!");
+ PostData(1, fListHist);
+ PostData(2, fTreeCascade);
+ return;
+ }
+
+ //17 April Fix: Always do primary vertex Z selection, after pA vertex selection from Roberto
+ if(TMath::Abs(lBestPrimaryVtxPos[2]) > 10.0) {
+ AliWarning("Pb / | Z position of Best Prim Vtx | > 10.0 cm ... return !");
+ PostData(1, fListHist);
+ PostData(2, fTreeCascade);
+ return;
+ }
+
+
+ lMagneticField = lESDevent->GetMagneticField( );
+ fHistV0MultiplicityForSelEvt ->Fill( lNumberOfV0s );
+ fHistMultiplicity->Fill(lMultiplicity);
+ fHistMultiplicityV0A->Fill(lMultiplicityV0A);
+ fHistMultiplicityZNA->Fill(lMultiplicityZNA);
+ fHistMultiplicityTRK->Fill(lMultiplicityTRK);
+ fHistMultiplicitySPD->Fill(lMultiplicitySPD);
//------------------------------------------------
// SKIP: Events with well-established PVtx
const AliESDVertex *lPrimaryTrackingESDVtxCheck = lESDevent->GetPrimaryVertexTracks();
const AliESDVertex *lPrimarySPDVtx = lESDevent->GetPrimaryVertexSPD();
- if (!lPrimarySPDVtx->GetStatus() && !lPrimaryTrackingESDVtxCheck->GetStatus() ){
+ if (!lPrimarySPDVtx->GetStatus() && !lPrimaryTrackingESDVtxCheck->GetStatus() && fkpAVertexSelection==kFALSE ){
AliWarning("Pb / No SPD prim. vertex nor prim. Tracking vertex ... return !");
PostData(1, fListHist);
PostData(2, fTreeCascade);
}
fHistV0MultiplicityForSelEvtNoTPCOnly ->Fill( lNumberOfV0s );
fHistMultiplicityNoTPCOnly->Fill(lMultiplicity);
+ fHistMultiplicityV0ANoTPCOnly->Fill(lMultiplicityV0A);
+ fHistMultiplicityZNANoTPCOnly->Fill(lMultiplicityZNA);
+ fHistMultiplicityTRKNoTPCOnly->Fill(lMultiplicityTRK);
+ fHistMultiplicitySPDNoTPCOnly->Fill(lMultiplicitySPD);
//------------------------------------------------
// Pileup Rejection Studies
}
fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup ->Fill( lNumberOfV0s );
fHistMultiplicityNoTPCOnlyNoPileup->Fill(lMultiplicity);
+ fHistMultiplicityV0ANoTPCOnlyNoPileup->Fill(lMultiplicityV0A);
+ fHistMultiplicityZNANoTPCOnlyNoPileup->Fill(lMultiplicityZNA);
+ fHistMultiplicityTRKNoTPCOnlyNoPileup->Fill(lMultiplicityTRK);
+ fHistMultiplicitySPDNoTPCOnlyNoPileup->Fill(lMultiplicitySPD);
//Do control histograms without the IsFromVertexerZ events, but consider them in analysis...
if( ! (lESDevent->GetPrimaryVertex()->IsFromVertexerZ() ) ){