void runAnalysisTaskPtMothFromPtDaug(TH1F* histPtDaug=0x0,
Bool_t readKineFromNtupla=kTRUE,const char* galiceList="galice.txt")
{
/////////////////////////////////////////////////////////////////////////////
// Run-macro to extract pt-spectra (and ptMin-spectra) for mothers //
// input: 1) pT histogram of daughter particles //
// 2) boolean flag:kFALSE -> read Kinematics.root to evaluate //
// correction factors, create a TNtuple //
// with kinematic informations of mothers //
// and daughters and store it in the file //
// "DecayKine.root" //
// kTRUE -> read the TNtupla from the file //
// "DecayKine.root" (after it is created) //
// to evaluate correction factors //
// 3) name of file with the list of "galice.root" files to read //
// kinematics (not needed after the TNtupla is created) //
// //
// output: 1) file Mothers.root which contains pt-spectra and ptMin //
// spectra of mothers particles //
// 2) TNtupla with kinematic informations (optional) //
// //
// Origin: Giuseppe.Bruno@ba.infn.it, Fiorella.Fionda@ba.infn.it //
// //
/////////////////////////////////////////////////////////////////////////////
char *ntuplaFileName = "DecayKine.root"; // default name of the Ntupla
char *mode = "local"; // analysis mode (select local or proof)
char *dataset = "/COMMON/COMMON/LHC09a14_0.9TeV_0.5T"; // define dataset for proof
if(mode == "proof") loadLib();
else{
gSystem->Load("libANALYSIS.so");
gSystem->Load("libANALYSISalice.so");
gSystem->Load("libPWGHFbase.so");
}
// Set AliPtMothFromPtDaugh object
AliPtMothFromPtDaugh *ptExtr = new AliPtMothFromPtDaugh();
ptExtr->SetDefaultAnalysis(AliPtMothFromPtDaugh::kBtoJPSI);
ptExtr->SetBinsPtMoth(0.,10,20,1);
ptExtr->SetBinsPtMinMoth(0.,10,20,1);
ptExtr->SetEtaMothers(-1.5,1.5);
ptExtr->SetEtaDaughter(-1.,1.);
if(!ptExtr->ReadHistoPtDaught(histPtDaug))
{ printf("Daughter pt-Histogram is not defined \n"); return; }
if(!ptExtr->CreateWeights()) return;
//
// create Analysis manager with MC and Input handlers
//
AliAnalysisManager *mgr = new AliAnalysisManager("mgr", "Analysis Manager");
AliMCEventHandler* mcHandler = new AliMCEventHandler();
mgr->SetMCtruthEventHandler(mcHandler);
AliInputEventHandler *inputHandler =0x0;
mgr->SetInputEventHandler(inputHandler);
TChain *chain=0x0;
if(mode=="local"){
if(!readKineFromNtupla) chain = CreateChain(galiceList); // create a chain with galice.root files
else mgr->SetExternalLoop(kTRUE); // to abort event loop when Ntupla is already created
}
//
// create task and add it to the manager
//
AliAnalysisTaskPtMothFromPtDaugh *task = new AliAnalysisTaskPtMothFromPtDaugh(readKineFromNtupla);
task->SetPtMothFromPtDaugh(ptExtr); // set AliPtMothFromPtDaugh object to the task
task->SetNtuplaFileName(ntuplaFileName);
mgr->AddTask(task);
//
// create input / output containers
//
AliAnalysisDataContainer *cOutput = mgr->CreateContainer("Mothers", TList::Class(), AliAnalysisManager::kOutputContainer,"Mothers.root");
mgr->ConnectOutput(task, 1, cOutput);
// optional output for TNtupla
AliAnalysisDataContainer *cOutput1 = 0x0;
if(!readKineFromNtupla){
cOutput1 = mgr->CreateContainer("DecayKine", TNtuple::Class(), AliAnalysisManager::kOutputContainer,ntuplaFileName);
mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
mgr->ConnectOutput(task,2,cOutput1);
}
//
// run analysis locally
//
Int_t result=mgr->InitAnalysis();
if (!result){
Error("RunAnalysis","Could not initialise Analysis.");
return 0;
}
mgr->PrintStatus();
if(mode=="local") mgr->StartAnalysis(mode,chain);
else if(mode=="proof") mgr->StartAnalysis(mode,dataset);
if(readKineFromNtupla) mgr->Terminate();
return;
}
TChain *CreateChain(const char* galiceName)
{
//
// Create a chain from a list of galice.root
//
ifstream in;
in.open(galiceName);
if (!in.is_open()) return 0x0;
TChain *chain=new TChain("TE");
TString line;
while(in.good()) {
in >> line;
if (!line.IsNull()) chain->AddFile(line);
}
return chain;
}
void loadLib(){
printf("****** Connect to PROOF *******\n");
gEnv->SetValue("XSec.GSI.DelegProxy","2");
TProof::Open("alicecaf.cern.ch");
gProof->UploadPackage("STEERBase.par");
gProof->EnablePackage("STEERBase.par");
gProof->UploadPackage("ESD.par");
gProof->EnablePackage("ESD.par");
gProof->UploadPackage("AOD.par");
gProof->EnablePackage("AOD.par");
gProof->UploadPackage("ANALYSIS.par");
gProof->EnablePackage("ANALYSIS.par");
gProof->UploadPackage("ANALYSISalice.par");
gProof->EnablePackage("ANALYSISalice.par");
gProof->UploadPackage("PWG3base.par");
gProof->EnablePackage("PWG3base.par");
}
runAnalysisTaskPtMothFromPtDaug.C:1 runAnalysisTaskPtMothFromPtDaug.C:2 runAnalysisTaskPtMothFromPtDaug.C:3 runAnalysisTaskPtMothFromPtDaug.C:4 runAnalysisTaskPtMothFromPtDaug.C:5 runAnalysisTaskPtMothFromPtDaug.C:6 runAnalysisTaskPtMothFromPtDaug.C:7 runAnalysisTaskPtMothFromPtDaug.C:8 runAnalysisTaskPtMothFromPtDaug.C:9 runAnalysisTaskPtMothFromPtDaug.C:10 runAnalysisTaskPtMothFromPtDaug.C:11 runAnalysisTaskPtMothFromPtDaug.C:12 runAnalysisTaskPtMothFromPtDaug.C:13 runAnalysisTaskPtMothFromPtDaug.C:14 runAnalysisTaskPtMothFromPtDaug.C:15 runAnalysisTaskPtMothFromPtDaug.C:16 runAnalysisTaskPtMothFromPtDaug.C:17 runAnalysisTaskPtMothFromPtDaug.C:18 runAnalysisTaskPtMothFromPtDaug.C:19 runAnalysisTaskPtMothFromPtDaug.C:20 runAnalysisTaskPtMothFromPtDaug.C:21 runAnalysisTaskPtMothFromPtDaug.C:22 runAnalysisTaskPtMothFromPtDaug.C:23 runAnalysisTaskPtMothFromPtDaug.C:24 runAnalysisTaskPtMothFromPtDaug.C:25 runAnalysisTaskPtMothFromPtDaug.C:26 runAnalysisTaskPtMothFromPtDaug.C:27 runAnalysisTaskPtMothFromPtDaug.C:28 runAnalysisTaskPtMothFromPtDaug.C:29 runAnalysisTaskPtMothFromPtDaug.C:30 runAnalysisTaskPtMothFromPtDaug.C:31 runAnalysisTaskPtMothFromPtDaug.C:32 runAnalysisTaskPtMothFromPtDaug.C:33 runAnalysisTaskPtMothFromPtDaug.C:34 runAnalysisTaskPtMothFromPtDaug.C:35 runAnalysisTaskPtMothFromPtDaug.C:36 runAnalysisTaskPtMothFromPtDaug.C:37 runAnalysisTaskPtMothFromPtDaug.C:38 runAnalysisTaskPtMothFromPtDaug.C:39 runAnalysisTaskPtMothFromPtDaug.C:40 runAnalysisTaskPtMothFromPtDaug.C:41 runAnalysisTaskPtMothFromPtDaug.C:42 runAnalysisTaskPtMothFromPtDaug.C:43 runAnalysisTaskPtMothFromPtDaug.C:44 runAnalysisTaskPtMothFromPtDaug.C:45 runAnalysisTaskPtMothFromPtDaug.C:46 runAnalysisTaskPtMothFromPtDaug.C:47 runAnalysisTaskPtMothFromPtDaug.C:48 runAnalysisTaskPtMothFromPtDaug.C:49 runAnalysisTaskPtMothFromPtDaug.C:50 runAnalysisTaskPtMothFromPtDaug.C:51 runAnalysisTaskPtMothFromPtDaug.C:52 runAnalysisTaskPtMothFromPtDaug.C:53 runAnalysisTaskPtMothFromPtDaug.C:54 runAnalysisTaskPtMothFromPtDaug.C:55 runAnalysisTaskPtMothFromPtDaug.C:56 runAnalysisTaskPtMothFromPtDaug.C:57 runAnalysisTaskPtMothFromPtDaug.C:58 runAnalysisTaskPtMothFromPtDaug.C:59 runAnalysisTaskPtMothFromPtDaug.C:60 runAnalysisTaskPtMothFromPtDaug.C:61 runAnalysisTaskPtMothFromPtDaug.C:62 runAnalysisTaskPtMothFromPtDaug.C:63 runAnalysisTaskPtMothFromPtDaug.C:64 runAnalysisTaskPtMothFromPtDaug.C:65 runAnalysisTaskPtMothFromPtDaug.C:66 runAnalysisTaskPtMothFromPtDaug.C:67 runAnalysisTaskPtMothFromPtDaug.C:68 runAnalysisTaskPtMothFromPtDaug.C:69 runAnalysisTaskPtMothFromPtDaug.C:70 runAnalysisTaskPtMothFromPtDaug.C:71 runAnalysisTaskPtMothFromPtDaug.C:72 runAnalysisTaskPtMothFromPtDaug.C:73 runAnalysisTaskPtMothFromPtDaug.C:74 runAnalysisTaskPtMothFromPtDaug.C:75 runAnalysisTaskPtMothFromPtDaug.C:76 runAnalysisTaskPtMothFromPtDaug.C:77 runAnalysisTaskPtMothFromPtDaug.C:78 runAnalysisTaskPtMothFromPtDaug.C:79 runAnalysisTaskPtMothFromPtDaug.C:80 runAnalysisTaskPtMothFromPtDaug.C:81 runAnalysisTaskPtMothFromPtDaug.C:82 runAnalysisTaskPtMothFromPtDaug.C:83 runAnalysisTaskPtMothFromPtDaug.C:84 runAnalysisTaskPtMothFromPtDaug.C:85 runAnalysisTaskPtMothFromPtDaug.C:86 runAnalysisTaskPtMothFromPtDaug.C:87 runAnalysisTaskPtMothFromPtDaug.C:88 runAnalysisTaskPtMothFromPtDaug.C:89 runAnalysisTaskPtMothFromPtDaug.C:90 runAnalysisTaskPtMothFromPtDaug.C:91 runAnalysisTaskPtMothFromPtDaug.C:92 runAnalysisTaskPtMothFromPtDaug.C:93 runAnalysisTaskPtMothFromPtDaug.C:94 runAnalysisTaskPtMothFromPtDaug.C:95 runAnalysisTaskPtMothFromPtDaug.C:96 runAnalysisTaskPtMothFromPtDaug.C:97 runAnalysisTaskPtMothFromPtDaug.C:98 runAnalysisTaskPtMothFromPtDaug.C:99 runAnalysisTaskPtMothFromPtDaug.C:100 runAnalysisTaskPtMothFromPtDaug.C:101 runAnalysisTaskPtMothFromPtDaug.C:102 runAnalysisTaskPtMothFromPtDaug.C:103 runAnalysisTaskPtMothFromPtDaug.C:104 runAnalysisTaskPtMothFromPtDaug.C:105 runAnalysisTaskPtMothFromPtDaug.C:106 runAnalysisTaskPtMothFromPtDaug.C:107 runAnalysisTaskPtMothFromPtDaug.C:108 runAnalysisTaskPtMothFromPtDaug.C:109 runAnalysisTaskPtMothFromPtDaug.C:110 runAnalysisTaskPtMothFromPtDaug.C:111 runAnalysisTaskPtMothFromPtDaug.C:112 runAnalysisTaskPtMothFromPtDaug.C:113 runAnalysisTaskPtMothFromPtDaug.C:114 runAnalysisTaskPtMothFromPtDaug.C:115 runAnalysisTaskPtMothFromPtDaug.C:116 runAnalysisTaskPtMothFromPtDaug.C:117 runAnalysisTaskPtMothFromPtDaug.C:118 runAnalysisTaskPtMothFromPtDaug.C:119 runAnalysisTaskPtMothFromPtDaug.C:120 runAnalysisTaskPtMothFromPtDaug.C:121 runAnalysisTaskPtMothFromPtDaug.C:122 runAnalysisTaskPtMothFromPtDaug.C:123 runAnalysisTaskPtMothFromPtDaug.C:124 runAnalysisTaskPtMothFromPtDaug.C:125 runAnalysisTaskPtMothFromPtDaug.C:126 runAnalysisTaskPtMothFromPtDaug.C:127 runAnalysisTaskPtMothFromPtDaug.C:128