}
+//_____________________________________________________________________________
+Double_t AlidNdPtHelper::GetStrangenessCorrFactorPbPb(const Double_t pt)
+{
+// data driven correction factor for secondaries (PbPb)
+
+if (pt <= 0.25) return 1.0;
+if (pt <= 0.5) return GetLinearInterpolationValue(0.25,1.0,0.5,1.4, pt);
+if (pt <= 1.0) return GetLinearInterpolationValue(0.5,1.4,1.0,1.47, pt);
+if (pt <= 2.0) return GetLinearInterpolationValue(1.0,1.47,2.0,1.56, pt);
+if (pt <= 5.0) return GetLinearInterpolationValue(2.0,1.56,5.0,1.67, pt);
+return 1.67;
+
+}
+
//___________________________________________________________________________
Double_t AlidNdPtHelper::GetLinearInterpolationValue(const Double_t x1,const Double_t y1,const Double_t x2,const Double_t y2, const Double_t pt)
{
}\r
}\r
\r
+ // track cuts from Jochen\r
+ const AliESDVertex* vtxESDTPC = fESD->GetPrimaryVertexTPC();\r
+ if( vtxESDTPC->GetNContributors() < 1 ) { \r
+ return;\r
+ }\r
+\r
+ const AliMultiplicity* multESD = fESD->GetMultiplicity();\r
+ if( vtxESDTPC->GetNContributors() < (-10.+0.25*multESD->GetNumberOfITSClusters(0)) ) {\r
+ return;\r
+ } \r
+ \r
+ \r
// Process analysis\r
\r
Bool_t process = kTRUE;\r
\r
if ( fUseCentrality == 1 ) {\r
// -- centrality cuts V0\r
+#if 0 \r
+ // 2010-11-10 - now old cuts\r
if ( multV0 >= 0. && multV0 <= 106.75 ) centrality = 90;\r
else if ( multV0 > 106.75 && multV0 <= 277.55 ) centrality = 80;\r
else if ( multV0 > 277.55 && multV0 <= 661.85 ) centrality = 70;\r
else if ( multV0 > 8902.95 && multV0 <= 12788.6 ) centrality = 10;\r
else if ( multV0 > 12788.6 && multV0 <= 15222.5 ) centrality = 5;\r
else if ( multV0 > 15222.5 && multV0 <= 19449.8 ) centrality = 0;\r
+#else\r
+ // 2010-11-14\r
+ if ( multV0 >= 0. && multV0 <= 124.5 ) centrality = 90;\r
+ else if ( multV0 > 124.5 && multV0 <= 274.5 ) centrality = 80;\r
+ else if ( multV0 > 274.5 && multV0 <= 574.5 ) centrality = 70;\r
+ else if ( multV0 > 574.5 && multV0 <= 1224.5 ) centrality = 60;\r
+ else if ( multV0 > 1224.5 && multV0 <= 2174.5 ) centrality = 50;\r
+ else if ( multV0 > 2174.5 && multV0 <= 3624.5 ) centrality = 40;\r
+ else if ( multV0 > 3624.5 && multV0 <= 5574.5 ) centrality = 30;\r
+ else if ( multV0 > 5574.5 && multV0 <= 8274.5 ) centrality = 20;\r
+ else if ( multV0 > 8274.5 && multV0 <= 12024.5 ) centrality = 10;\r
+ else if ( multV0 > 12024.5 && multV0 <= 14674.5 ) centrality = 5;\r
+ else if ( multV0 > 14674.5 && multV0 <= 19449.5 ) centrality = 0;\r
+#endif\r
}\r
else if ( fUseCentrality == 2 ) {\r
+#if 0 \r
+ // 2010-11-10 - now old cuts\r
if ( nClusters[1] >= 0. && nClusters[1] <= 7.18 ) centrality = 100;\r
else if ( nClusters[1] > 7.18 && nClusters[1] <= 35.9 ) centrality = 90;\r
else if ( nClusters[1] > 35.9 && nClusters[1] <= 93.34 ) centrality = 80;\r
else if ( nClusters[1] > 2735.58 && nClusters[1] <= 3884.38 ) centrality = 10;\r
else if ( nClusters[1] > 3884.38 && nClusters[1] <= 4573.66 ) centrality = 5;\r
else if ( nClusters[1] > 4573.66 && nClusters[1] <= 6540.98 ) centrality = 0;\r
+#else\r
+ // 2010-11-14\r
+ if ( nClusters[1] > 0. && nClusters[1] <= 29.5 ) centrality = 90;\r
+ else if ( nClusters[1] > 29.5 && nClusters[1] <= 69.5 ) centrality = 80;\r
+ else if ( nClusters[1] > 69.5 && nClusters[1] <= 149.5 ) centrality = 70;\r
+ else if ( nClusters[1] > 149.5 && nClusters[1] <= 309.5 ) centrality = 60;\r
+ else if ( nClusters[1] > 309.5 && nClusters[1] <= 589.5 ) centrality = 50;\r
+ else if ( nClusters[1] > 589.5 && nClusters[1] <= 989.5 ) centrality = 40;\r
+ else if ( nClusters[1] > 989.5 && nClusters[1] <= 1569.5 ) centrality = 30;\r
+ else if ( nClusters[1] > 1569.5 && nClusters[1] <= 2369.5 ) centrality = 20;\r
+ else if ( nClusters[1] > 2369.5 && nClusters[1] <= 3509.5 ) centrality = 10;\r
+ else if ( nClusters[1] > 3509.5 && nClusters[1] <= 4349.5 ) centrality = 5;\r
+ else if ( nClusters[1] > 4349.5 && nClusters[1] <= 6540.5 ) centrality = 0;\r
+#endif\r
}\r
\r
return centrality;\r
--- /dev/null
+void AddTask_dNdPtCutAnalysisPbPb()
+{
+/*
+CheckLoadLibrary("libPWG0base");
+CheckLoadLibrary("libPWG0dep");
+CheckLoadLibrary("libPWG0selectors");
+*/
+
+ gSystem->Load("libPWG0base.so");
+ gSystem->Load("libPWG0dep.so");
+ gSystem->Load("libPWG0selectors.so");
+
+ AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
+
+ if (!mgr) {
+ Error("AddTask_dNdPtCutAnalysisPbPb", "No analysis manager found.");
+ return 0;
+ }
+
+ // Switch off all AliInfo (too much output!!!)
+ AliLog::SetGlobalLogLevel(AliLog::kError);
+ mgr->SetDebugLevel(0);
+
+ //
+ // Create physics trigger selection class
+ //
+ AliPhysicsSelection *physTrigSel = new AliPhysicsSelection();
+
+ //
+ // Create event cuts
+ //
+ Float_t zvWindow = 20. ;
+
+ AlidNdPtEventCuts *evtCuts = new AlidNdPtEventCuts("AlidNdPtEventCuts","Event cuts");
+ evtCuts->SetZvRange(-zvWindow,zvWindow);
+ evtCuts->SetMeanXYZv(0.0,0.0,0.0);
+ evtCuts->SetSigmaMeanXYZv(1.0,1.0,10.0);
+ evtCuts->SetTriggerRequired(kTRUE);
+
+ //
+ // Create geom. acceptance cuts
+ //
+ Float_t etaWindow = 1. ;
+ Float_t ptMin = 0.15 ;
+
+ AlidNdPtAcceptanceCuts *accCuts = new AlidNdPtAcceptanceCuts("AlidNdPtAcceptanceCuts","Geom. acceptance cuts");
+ accCuts->SetEtaRange(-etaWindow,etaWindow);
+ accCuts->SetPtRange(ptMin,1.e10);
+ accCuts->SetMaxDCAr(3.0);
+ accCuts->SetMaxDCAz(30.0);
+
+ //
+ // Create standard esd track cuts
+ //
+ Int_t cutMode = 23;
+
+ gROOT->LoadMacro("$ALICE_ROOT/PWG0/dNdPt/macros/CreatedNdPtTrackCuts.C");
+ AliESDtrackCuts* esdTrackCuts = CreatedNdPtTrackCuts(cutMode);
+ if (!esdTrackCuts) {
+ printf("ERROR: esdTrackCuts could not be created\n");
+ return;
+ } else {
+ esdTrackCuts->SetHistogramsOn(kTRUE);
+ }
+
+
+ Bool_t hasMC=(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0);
+
+ //
+ // Create task
+ //
+ AlidNdPtTask *task = new AlidNdPtTask("AlidNdPtTask");
+ task->SetUseMCInfo(hasMC);
+
+ // trigger
+ task->SelectCollisionCandidates(AliVEvent::kMB);
+
+ //
+ // set analysis options from the Helper here !!!
+ //
+ AlidNdPtHelper::OutputObject outputObject = AlidNdPtHelper::kCutAnalysisPbPb;
+ AlidNdPtHelper::AnalysisMode analysisMode = AlidNdPtHelper::kTPC ;
+ AlidNdPtHelper::ParticleMode particleMode = AlidNdPtHelper::kAllPart ;
+
+
+ //
+ // Create cut analysis object
+ //
+ if(outputObject==AlidNdPtHelper::kCutAnalysisPbPb) {
+
+ AlidNdPtCutAnalysisPbPb *fdNdPtAnalysisPbPb = new AlidNdPtCutAnalysisPbPb("dNdPtCutAnalysisPbPb","dN/dPt Analysis");
+ fdNdPtAnalysisPbPb->SetEventCuts(evtCuts);
+ fdNdPtAnalysisPbPb->SetAcceptanceCuts(accCuts);
+ fdNdPtAnalysisPbPb->SetTrackCuts(esdTrackCuts);
+ fdNdPtAnalysisPbPb->SetAnalysisMode(analysisMode);
+ fdNdPtAnalysisPbPb->SetParticleMode(particleMode);
+
+
+ if(hasMC)
+ {
+ physTrigSel->SetAnalyzeMC();
+ fdNdPtAnalysisPbPb->SetPhysicsTriggerSelection(physTrigSel);
+
+ fdNdPtAnalysisPbPb->SetUseMCInfo(kTRUE);
+ }else { // online trigger
+ fdNdPtAnalysisPbPb->SetPhysicsTriggerSelection(physTrigSel);
+ }
+
+ task->AddAnalysisObject( fdNdPtAnalysisPbPb );
+ }
+
+
+ // Centrality
+ task->SetUseCentrality(1); // 0=off, 1=VZERO, 2=SPD
+ task->SetUseCentralityBin(0); // Bin to be used 0,5,10,20,30,40,50,60,70,80,90,(100=SPDonly)
+ // 0 = most centrality
+
+ // Add task
+ mgr->AddTask(task);
+
+ // Create containers for input
+ AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
+ mgr->ConnectInput(task, 0, cinput);
+
+ AliAnalysisDataContainer *coutput = mgr->CreateContainer("jotwinow_dNdPtCutAnalysisPbPb", TList::Class(), AliAnalysisManager::kOutputContainer, "jotwinow_dNdPtCutAnalysisPbPb.root");
+ mgr->ConnectOutput(task, 1, coutput);
+
+}
+