Bool_t AliCFRsnTask(
const Bool_t useGrid = 1,
+ const Bool_t readAOD = 0,
const char * kTagXMLFile="wn.xml", // XML file containing tags
)
{
analysisChain = tagAna->QueryTags(runCuts,lhcCuts,detCuts,eventCuts);
}
else {// local data
- analysisChain = new TChain("esdTree");
//here put your input data path
- analysisChain->Add("AliESDs.root");
+ if (readAOD) {
+ analysisChain = new TChain("aodTree");
+ analysisChain->Add("your_data_path/001/AliAOD.root");
+ analysisChain->Add("your_data_path/002/AliAOD.root");
+ }
+ else {
+ analysisChain = new TChain("esdTree");
+ analysisChain->Add("your_data_path/001/AliESDs.root");
+ analysisChain->Add("your_data_path/002/AliESDs.root");
+ }
}
//Acceptance Cuts
AliCFPairAcceptanceCuts *mcAccCuts = new AliCFPairAcceptanceCuts("mcAccCuts","MC acceptance cuts");
- mcAccCuts->SetMinNHitITS(mintrackrefsITS,mintrackrefsITS);
- mcAccCuts->SetMinNHitTPC(mintrackrefsTPC,mintrackrefsTPC);
+ mcAccCuts->GetNegCut()->SetMinNHitITS(mintrackrefsITS);
+ mcAccCuts->GetPosCut()->SetMinNHitITS(mintrackrefsITS);
+ mcAccCuts->GetNegCut()->SetMinNHitTPC(mintrackrefsTPC);
+ mcAccCuts->GetPosCut()->SetMinNHitTPC(mintrackrefsTPC);
// Rec-Level kinematic cuts
AliCFTrackKineCuts *recKineCuts = new AliCFTrackKineCuts("recKineCuts","rec-level kine cuts");
recKineCuts->SetChargeRec(charge);
AliCFPairQualityCuts *recQualityCuts = new AliCFPairQualityCuts("recQualityCuts","rec-level quality cuts");
- recQualityCuts->SetMinNClusterTPC(minclustersTPC,minclustersTPC);
- recQualityCuts->SetRequireITSRefit(kTRUE,kTRUE);
+ if (!readAOD) {
+ recQualityCuts->GetNegCut()->SetMinNClusterTPC(minclustersTPC);
+ recQualityCuts->GetPosCut()->SetMinNClusterTPC(minclustersTPC);
+ }
+ recQualityCuts->GetNegCut()->SetStatus(AliESDtrack::kTPCrefit & AliESDtrack::kITSrefit);
+ recQualityCuts->GetPosCut()->SetStatus(AliESDtrack::kTPCrefit & AliESDtrack::kITSrefit);
+
AliCFPairIsPrimaryCuts *recIsPrimaryCuts = new AliCFPairIsPrimaryCuts("recIsPrimaryCuts","rec-level isPrimary cuts");
- recIsPrimaryCuts->SetMaxNSigmaToVertex(nsigmavtx,nsigmavtx);
+ if (readAOD) {
+ recIsPrimaryCuts->GetNegCut()->SetAODType(AliAODTrack::kPrimary);
+ recIsPrimaryCuts->GetPosCut()->SetAODType(AliAODTrack::kPrimary);
+ }
+ else {
+ recIsPrimaryCuts->GetNegCut()->SetMaxNSigmaToVertex(nsigmavtx);
+ recIsPrimaryCuts->GetPosCut()->SetMaxNSigmaToVertex(nsigmavtx);
+ }
AliCFPairPidCut* cutPID = new AliCFPairPidCut("cutPID","ESD_PID") ;
Double_t prior_pp[AliPID::kSPECIES] = {0.0244519,
0.0733 };
- cutPID->SetPriors(prior_pbpb);
- cutPID->SetProbabilityCut(0.,0.);
- cutPID->SetDetectors("TPC ITS TOF TRD","TPC ITS TOF TRD");
+ cutPID->GetNegCut()->SetPriors(prior_pbpb);
+ cutPID->GetPosCut()->SetPriors(prior_pbpb);
+ cutPID->GetNegCut()->SetProbabilityCut(0);
+ cutPID->GetPosCut()->SetProbabilityCut(0);
+ cutPID->GetNegCut()->SetDetectors("ITS TPC TRD");
+ cutPID->GetPosCut()->SetDetectors("ITS TPC TRD");
+ if (readAOD) {
+ cutPID->GetNegCut()->SetAODmode(kTRUE);
+ cutPID->GetPosCut()->SetAODmode(kTRUE);
+ }
+ else {
+ cutPID->GetNegCut()->SetAODmode(kFALSE);
+ cutPID->GetPosCut()->SetAODmode(kFALSE);
+ }
+
switch(PDG) {
- case -313 : cutPID->SetParticleType(AliPID::kKaon ,kTRUE,AliPID::kPion ,kTRUE); break;
- case 313 : cutPID->SetParticleType(AliPID::kPion ,kTRUE,AliPID::kKaon ,kTRUE); break;
- case 333 : cutPID->SetParticleType(AliPID::kKaon ,kTRUE,AliPID::kKaon ,kTRUE); break;
- case 3124 : cutPID->SetParticleType(AliPID::kKaon ,kTRUE,AliPID::kProton,kTRUE); break;
- case -3124 : cutPID->SetParticleType(AliPID::kProton,kTRUE,AliPID::kKaon ,kTRUE); break;
+ case -313 :
+ cutPID->GetNegCut()->SetParticleType(AliPID::kKaon ,kTRUE);
+ cutPID->GetPosCut()->SetParticleType(AliPID::kPion ,kTRUE);
+ break;
+ case 313 :
+ cutPID->GetNegCut()->SetParticleType(AliPID::kPion ,kTRUE);
+ cutPID->GetPosCut()->SetParticleType(AliPID::kKaon ,kTRUE);
+ break;
+ case 333 :
+ cutPID->GetNegCut()->SetParticleType(AliPID::kKaon ,kTRUE);
+ cutPID->GetPosCut()->SetParticleType(AliPID::kKaon ,kTRUE);
+ break;
+ case 3124 :
+ cutPID->GetNegCut()->SetParticleType(AliPID::kKaon ,kTRUE);
+ cutPID->GetPosCut()->SetParticleType(AliPID::kProton,kTRUE);
+ break;
+ case -3124 :
+ cutPID->GetNegCut()->SetParticleType(AliPID::kProton,kTRUE);
+ cutPID->GetPosCut()->SetParticleType(AliPID::kKaon ,kTRUE);
+ break;
default : printf("UNDEFINED PID\n"); break;
}
//cutPID->SetQAOn(kTRUE);
// create the task
AliCFRsnTask *task = new AliCFRsnTask("AliRsnTask");
task->SetCFManager(man); //here is set the CF manager
+ task->SetRsnPDG(PDG);
//SETUP THE ANALYSIS MANAGER TO READ INPUT CHAIN AND WRITE DESIRED OUTPUTS
else mgr->SetAnalysisType(AliAnalysisManager::kLocalAnalysis);
AliMCEventHandler* mcHandler = new AliMCEventHandler();
- AliESDInputHandler* esdHandler = new AliESDInputHandler();
mgr->SetMCtruthEventHandler(mcHandler);
- mgr->SetInputEventHandler(esdHandler);
+
+ AliInputEventHandler* dataHandler ;
+ if (readAOD) dataHandler = new AliAODInputHandler();
+ else dataHandler = new AliESDInputHandler();
+ mgr->SetInputEventHandler(dataHandler);
+
// Create and connect containers for input/output
cinput0->SetData(analysisChain);
mgr->AddTask(task);
- mgr->ConnectInput (task,0,cinput0);
+ mgr->ConnectInput (task,0,mgr->GetCommonInputContainer());
mgr->ConnectOutput(task,0,coutput0);
mgr->ConnectOutput(task,1,coutput1);
mgr->ConnectOutput(task,2,coutput2);
}
void Load(Bool_t useGrid) {
- //remove this file which can cause problems
- if (!useGrid)
- gSystem->Exec("rm $ALICE_ROOT/ANALYSIS/AliAnalysisSelector_cxx.so");
-
//load the required aliroot libraries
gSystem->Load("libANALYSIS") ;
gSystem->Load("libANALYSISalice") ;
-
- gSystem->SetIncludePath("-I. -I$ALICE_ROOT/include -I$ROOTSYS/include -I$ALICE_ROOT/PWG2/RESONANCES -I$ALICE_ROOT/CORRFW");
+ gSystem->Load("libPWG2resonances");
+ gSystem->Load("libCORRFW");
- if (!useGrid) {
- //load local CF library
- gSystem->Load("libCORRFW");
- //load PWG2 library
- gSystem->Load("libPWG2resonances");
- }
- else {
- //compile online the task class
- gSystem->Exec("cp $ALICE_ROOT/PWG2/RESONANCES/AliRsnDaughter.cxx .");
- gROOT->LoadMacro("./AliRsnDaughter.cxx+");
- gSystem->Exec("tar zxvf cf_classes.tgz");
- gROOT->LoadMacro("./AliCFFrame.cxx+");
- gROOT->LoadMacro("./AliCFVGrid.cxx+");
- gROOT->LoadMacro("./AliCFGrid.cxx+");
- gROOT->LoadMacro("./AliCFGridSparse.cxx+");
- gROOT->LoadMacro("./AliCFContainer.cxx+");
- gROOT->LoadMacro("./AliCFCutBase.cxx+");
- gROOT->LoadMacro("./AliCFTrackKineCuts.cxx+");
- gROOT->LoadMacro("./AliCFTrackIsPrimaryCuts.cxx+");
- gROOT->LoadMacro("./AliCFTrackQualityCuts.cxx+");
- gROOT->LoadMacro("./AliCFParticleGenCuts.cxx+");
- gROOT->LoadMacro("./AliCFAcceptanceCuts.cxx+");
- gROOT->LoadMacro("./AliCFTrackCutPid.cxx+");
- gROOT->LoadMacro("./AliCFManager.cxx+");
- gSystem->Exec("tar zxvf cf_rsn.tgz");
- gROOT->LoadMacro("./AliCFPair.cxx+");
- gROOT->LoadMacro("./AliCFPairAcceptanceCuts.cxx+");
- gROOT->LoadMacro("./AliCFPairQualityCuts.cxx+");
- gROOT->LoadMacro("./AliCFPairIsPrimaryCuts.cxx+");
- gROOT->LoadMacro("./AliCFPairPidCut.cxx+");
- }
+ gSystem->AddIncludePath("-I$ALICE_ROOT/PWG2/RESONANCES");
gROOT->LoadMacro("./AliCFRsnTask.cxx+");
}