Double_t lMultiplicityVar = GetRefMultiOrCentrality( eventMain );\r
\r
// get the reaction plane\r
- gReactionPlane = GetEventPlane(eventMain);\r
- fHistEventPlane->Fill(gReactionPlane,lMultiplicityVar);\r
- if(gReactionPlane < 0){\r
- return;\r
+ if(fEventClass != "Multiplicity") {\r
+ gReactionPlane = GetEventPlane(eventMain);\r
+ fHistEventPlane->Fill(gReactionPlane,lMultiplicityVar);\r
+ if(gReactionPlane < 0){\r
+ return;\r
+ }\r
}\r
\r
// get the accepted tracks in main event\r
\r
//multiplicity cut (used in pp)\r
fHistNumberOfAcceptedTracks->Fill(gNumberOfAcceptedTracks,lMultiplicityVar);\r
- if(fUseMultiplicity) {\r
- if((gNumberOfAcceptedTracks < fNumberOfAcceptedTracksMin)||(gNumberOfAcceptedTracks > fNumberOfAcceptedTracksMax))\r
- return;\r
- }\r
\r
- // store charges of all accepted tracks, shuffle and reassign (two extra loops!)\r
+ // store charges of all accepted tracks,shuffle and reassign(two extra loops)\r
TObjArray* tracksShuffled = NULL;\r
if(fRunShuffling){\r
tracksShuffled = GetShuffledTracks(tracksMain,lMultiplicityVar);\r
\r
Bool_t isSelectedMain = kTRUE;\r
Float_t gCentrality = -1.;\r
+ Float_t gRefMultiplicity = -1.;\r
TString gAnalysisLevel = fBalance->GetAnalysisLevel();\r
\r
fHistEventStats->Fill(1,gCentrality); //all events\r
gCentrality = -1.;\r
}\r
}\r
+\r
+ //Multiplicity stuff \r
+ if(fUseMultiplicity) \r
+ gRefMultiplicity = GetRefMultiOrCentrality(event);\r
\r
// Event Vertex MC\r
if(gAnalysisLevel == "MC"){\r
//gVertexArray.At(0),\r
//gVertexArray.At(1),\r
//gVertexArray.At(2));\r
- fHistEventStats->Fill(3,gCentrality); //events with a proper vertex\r
+ if(fUseMultiplicity) \r
+ fHistEventStats->Fill(3,gRefMultiplicity); //events with a proper vertex\r
+ else \r
+ fHistEventStats->Fill(3,gCentrality); //events with a proper vertex\r
if(TMath::Abs(gVertexArray.At(0)) < fVxMax) {\r
if(TMath::Abs(gVertexArray.At(1)) < fVyMax) {\r
if(TMath::Abs(gVertexArray.At(2)) < fVzMax) {\r
- fHistEventStats->Fill(4,gCentrality); //analayzed events\r
+ if(fUseMultiplicity) \r
+ fHistEventStats->Fill(4,gRefMultiplicity);//analyzed events\r
+ else \r
+ fHistEventStats->Fill(4,gCentrality); //analyzed events\r
fHistVx->Fill(gVertexArray.At(0));\r
fHistVy->Fill(gVertexArray.At(1));\r
fHistVz->Fill(gVertexArray.At(2),gCentrality);\r
\r
// take only events inside centrality class\r
- if((fImpactParameterMin < gCentrality) && (fImpactParameterMax > gCentrality)){\r
- fHistEventStats->Fill(5,gCentrality); //events with correct centrality\r
- return gCentrality; \r
- }//centrality class\r
+ if(fUseCentrality) {\r
+ if((fImpactParameterMin < gCentrality) && (fImpactParameterMax > gCentrality)){\r
+ fHistEventStats->Fill(5,gCentrality); //events with correct centrality\r
+ return gCentrality; \r
+ }//centrality class\r
+ }\r
+ // take events only within the same multiplicity class\r
+ else if(fUseMultiplicity) {\r
+ if((gRefMultiplicity > fNumberOfAcceptedTracksMin)||(gRefMultiplicity < fNumberOfAcceptedTracksMax)) {\r
+ fHistEventStats->Fill(5,gRefMultiplicity); //events with correct multiplicity\r
+ return gRefMultiplicity;\r
+ }\r
+ }//multiplicity range\r
}//Vz cut\r
}//Vy cut\r
}//Vx cut\r
vertex->GetCovarianceMatrix(fCov);\r
if(vertex->GetNContributors() > 0) {\r
if(fCov[5] != 0) {\r
- fHistEventStats->Fill(3,gCentrality); //events with a proper vertex\r
+ if(fUseMultiplicity) \r
+ fHistEventStats->Fill(3,gRefMultiplicity); //proper vertex\r
+ else \r
+ fHistEventStats->Fill(3,gCentrality); //proper vertex\r
if(TMath::Abs(vertex->GetX()) < fVxMax) {\r
if(TMath::Abs(vertex->GetY()) < fVyMax) {\r
if(TMath::Abs(vertex->GetZ()) < fVzMax) {\r
- fHistEventStats->Fill(4,gCentrality); //analyzed events\r
+ if(fUseMultiplicity) \r
+ fHistEventStats->Fill(4,gRefMultiplicity);//analyzed events\r
+ else \r
+ fHistEventStats->Fill(4,gCentrality); //analyzed events\r
fHistVx->Fill(vertex->GetX());\r
fHistVy->Fill(vertex->GetY());\r
fHistVz->Fill(vertex->GetZ(),gCentrality);\r
\r
// take only events inside centrality class\r
- if((gCentrality > fCentralityPercentileMin) && (gCentrality < fCentralityPercentileMax)){\r
- fHistEventStats->Fill(5,gCentrality); //events with correct centrality\r
- return gCentrality; \r
- }//centrality class\r
+ if(fUseCentrality) {\r
+ if((gCentrality > fCentralityPercentileMin) && (gCentrality < fCentralityPercentileMax)){\r
+ fHistEventStats->Fill(5,gCentrality); //events with correct centrality\r
+ return gCentrality; \r
+ }//centrality class\r
+ }\r
+ // take events only within the same multiplicity class\r
+ else if(fUseMultiplicity) {\r
+ if((gRefMultiplicity > fNumberOfAcceptedTracksMin)||(gRefMultiplicity < fNumberOfAcceptedTracksMax)) {\r
+ fHistEventStats->Fill(5,gRefMultiplicity); //events with correct multiplicity\r
+ return gRefMultiplicity;\r
+ }\r
+ }//multiplicity range\r
}//Vz cut\r
}//Vy cut\r
}//Vx cut\r
Float_t gCentrality = -1.;\r
Double_t fMultiplicity = -100.;\r
TString gAnalysisLevel = fBalance->GetAnalysisLevel();\r
- if(fEventClass == "Centrality"){\r
- \r
\r
+ if(fEventClass == "Centrality"){\r
if(gAnalysisLevel == "AOD") { //centrality in AOD header\r
AliAODHeader *header = (AliAODHeader*) event->GetHeader();\r
if(header){\r
fMultiplicity = fESDtrackCuts->GetReferenceMultiplicity(gESDEvent, AliESDtrackCuts::kTrackletsITSTPC,0.5);\r
}//AliESDevent cast\r
}\r
- if(fEventClass=="Multiplicity"&&gAnalysisLevel != "ESD"){\r
+ else if(fEventClass=="Multiplicity"&&gAnalysisLevel == "AOD"){\r
AliAODHeader *header = (AliAODHeader*) event->GetHeader();\r
if(header){\r
fMultiplicity = header->GetRefMultiplicity();\r
}//AOD header\r
}\r
+ else if(fEventClass=="Multiplicity"&&gAnalysisLevel == "MC") {\r
+ AliMCEvent* gMCEvent = dynamic_cast<AliMCEvent*>(event);\r
+ fMultiplicity = gMCEvent->GetNumberOfPrimaries();\r
+ }\r
+\r
Double_t lReturnVal = -100;\r
if(fEventClass=="Multiplicity"){\r
lReturnVal = fMultiplicity;\r
Bool_t bResonancesCut = kFALSE,\r
Bool_t bHBTcut = kFALSE,\r
Bool_t bConversionCut = kFALSE,\r
+ \r
Bool_t bMomentumDifferenceCut = kFALSE,\r
Int_t AODfilterBit = 128,\r
Bool_t bCentralTrigger = kFALSE,\r
\r
//Event characteristics scheme\r
taskBF->SetEventClass(fArgEventClass);\r
+ if(fArgEventClass = "Multiplicity")\r
+ taskBF->SetMultiplicityRange(centrMin,centrMax);\r
+ else \r
+ taskBF->SetCentralityPercentileRange(centrMin,centrMax);\r
\r
taskBF->SetAnalysisObject(bf);\r
if(gRunShuffling) taskBF->SetShufflingObject(bfs);\r
}\r
}\r
\r
- taskBF->SetCentralityPercentileRange(centrMin,centrMax);\r
if(analysisType == "ESD") {\r
AliESDtrackCuts *trackCuts = GetTrackCutsObject(ptMin,ptMax,etaMin,etaMax,maxTPCchi2,DCAxy,DCAz,minNClustersTPC);\r
taskBF->SetAnalysisCutObject(trackCuts);\r