]> git.uio.no Git - u/mrichter/AliRoot.git/blob - FMD/analysis/RunAliEnFMDAnalysisSE.C
Upgraded analysis tasks to conply with the requirements of the Analysis trains
[u/mrichter/AliRoot.git] / FMD / analysis / RunAliEnFMDAnalysisSE.C
1 void RunAliEnFMDAnalysisSE(const Char_t* collectionName="collection.xml", const Char_t* cdbPath="local://$ALICE_ROOT/OCDB") {
2
3   gSystem->Load("libANALYSIS");
4   gSystem->Load("libANALYSISalice");
5   gSystem->Load("libFMDanalysis");
6   
7   TGrid::Connect("alien://",0,0,"t"); 
8   TChain* chain = CreateChainSingle(collectionName);  
9   
10   if (!chain) return;
11   
12   //
13   // Make the analysis manager
14   AliAnalysisManager *mgr  = new AliAnalysisManager("Analysis Train", "A test setup for the analysis train");
15   // ESD input handler
16   AliESDInputHandler *esdHandler = new AliESDInputHandler();
17   mgr->SetInputEventHandler(esdHandler);
18   
19   AliMCEventHandler *mcHandler = new AliMCEventHandler();
20   mgr->SetMCtruthEventHandler(mcHandler);
21   
22   AliAODHandler* aodHandler   = new AliAODHandler();
23   mgr->SetOutputEventHandler(aodHandler);
24   aodHandler->SetOutputFileName("AliAODs.root");
25   
26   
27   AliAnalysisDataContainer *cin_esd = mgr->GetCommonInputContainer();
28   // Output AOD container. Pointer to AOD put here only by filter task.
29   // This container is managed by the AOD handler
30   AliAnalysisDataContainer *cout_aod = mgr->GetCommonOutputContainer();
31   
32   AliFMDAnalysisTaskSE *fmdana = new AliFMDAnalysisTaskSE("FMDAnalysis");
33   mgr->AddTask(fmdana);
34   // Output histograms list for jet analysis                       
35   AliAnalysisDataContainer *cout_fmd = mgr->CreateContainer("BackgroundCorrected", 
36                                                             TList::Class(),
37                                                             AliAnalysisManager::kOutputContainer, "fmd_analysis.root");
38   // Dummy AOD output container for jet analysis (no client yet)
39   AliAnalysisDataContainer *c_aodfmd = mgr->CreateContainer("cAODfmd", 
40                                                             TTree::Class(),
41                                                             AliAnalysisManager::kExchangeContainer);
42   // Connect to data containers
43   mgr->ConnectInput  (fmdana,     0, cin_esd  );
44   mgr->ConnectOutput (fmdana,     0, c_aodfmd );
45   mgr->ConnectOutput (fmdana,     1, cout_fmd );
46        
47   
48   AliCDBManager* cdb = AliCDBManager::Instance();
49   cdb->SetDefaultStorage(cdbPath);
50   
51   cdb->SetRun(0);
52   
53   AliFMDAnaParameters* pars = AliFMDAnaParameters::Instance();
54   pars->Init();
55   if (AliGeomManager::GetGeometry() == NULL)
56     AliGeomManager::LoadGeometry();
57   
58   AliFMDGeometry* geo = AliFMDGeometry::Instance();
59   geo->Init();
60   geo->InitTransformations();
61   
62   TStopwatch timer;
63   timer.Start();
64   if (mgr->InitAnalysis()) {
65     mgr->PrintStatus();
66     mgr->StartAnalysis("local",chain, 5000);
67   }   
68   timer.Stop();
69   timer.Print();
70 }
71 //______________________________________________________________________________
72 TChain* CreateChainSingle(const char* xmlfile, const char *treeName="esdTree")
73 {
74    printf("*******************************\n");
75    printf("*** Getting the ESD Chain   ***\n");
76    printf("*******************************\n");
77    TAlienCollection * myCollection  = TAlienCollection::Open(xmlfile);
78
79    if (!myCollection) {
80       ::Error("CreateChainSingle", "Cannot create an AliEn collection from %s", xmlfile) ;
81       return NULL ;
82   }
83
84   TChain* chain = new TChain(treeName);
85   myCollection->Reset() ;
86   Int_t nFiles = 0;
87   while ( myCollection->Next() && nFiles <20) { 
88     chain->Add(myCollection->GetTURL("")) ;
89     nFiles++;
90   }
91   chain->ls();
92   return chain;
93 }