ROOT logo
Bool_t AliCFMuonSingleTask1(Int_t runmin = 17, Int_t runmax = 17)
{
    Bool_t isMC=kTRUE;
    
    TBenchmark benchmark;
    benchmark.Start("AliMuonSingleTask1");
    AliLog::SetGlobalDebugLevel(0);
    Load() ; // load the required libraries
    TChain * analysisChain ;
    analysisChain = new TChain("esdTree");

    Char_t RunFile[256];
    for(Int_t i=runmin; i<=runmax; i++){
	sprintf(RunFile,"/home/lopez/alice/data/TEST/run%d-10/AliESDs.root",i);
	analysisChain->Add(RunFile);
    }

    enum             { kEta,  kY, kPhi, kPt, kP3, kHit, kChi2Fit, kTrM, kChi2TrM,  kContrN,  kVt,  kVz, kTrig, kDCA, kZcoor, kRabs, kCharge, kTheta,kNVars };
    Int_t  nBins[] = {   5 , 5  ,  45 , 60 ,150 ,  20 ,      20 ,  4  ,      20 ,     202 , 100 ,  100 ,  10 , 500 ,   1000,    7 ,     3 , 100      };
    Double_t min[] = {  -4.,-4. ,-180.,  0.,  0.,   0.,       0., -0.5,       0.,     -2.5,   0., -100.,   0.,   0., -3000.,  171.,  -1.5 , 2.95      };
    Double_t max[] = {-2.5.,-2.5, 180., 30.,150.,  20.,      20.,  3.5,      10.,    199.5, 200.,  100.,  10., 500.,  1000.,  178.,   1.5 , 3.15     };
    
    Double_t *binLimits = 0;
    Int_t nSteps=1; if (isMC) nSteps=2;
    AliCFContainer* contCF = new AliCFContainer("container", "", nSteps, kNVars, nBins);
    for (Int_t var=kNVars; var--;) {
	binLimits = new Double_t[nBins[var]+1];
	for (Int_t i=0; i<=nBins[var]; i++) binLimits[i]=min[var]+i*(max[var]-min[var])/nBins[var];
	contCF->SetBinLimits(var, binLimits);
	delete [] binLimits; binLimits=0;
    }
    
    TList *qaList = new TList();
    TObjArray *genList = new TObjArray(0);
    AliCFTrackKineCuts *genKineCuts = new AliCFTrackKineCuts("genKineCuts", "GenKineCuts");
    genKineCuts->SetPtRange(min[kPt], max[kPt]);
    genKineCuts->SetRapidityRange(min[kY], max[kY]);
    genKineCuts->SetQAOn(qaList);
    genList->AddLast(genKineCuts);

    TObjArray *recList = new TObjArray(0);
    AliCFTrackKineCuts *recKineCuts = new AliCFTrackKineCuts("recKineCuts", "RecKineCuts");
    recKineCuts->SetPtRange(min[kPt], max[kPt]);
    recKineCuts->SetRapidityRange(min[kY], max[kY]);
    recKineCuts->SetQAOn(qaList);
    recList->AddLast(recKineCuts);
//__

    AliCFManager* managerCF = new AliCFManager() ;
    managerCF->SetParticleContainer(contCF);
    managerCF->SetParticleCutsList(AliCFManager::kPartGenCuts, genList);
    managerCF->SetParticleCutsList(AliCFManager::kPartAccCuts, recList);

    AliCFMuonSingleTask1 *taskMuonCF = new AliCFMuonSingleTask1("AliMuonSingleTask1");
    taskMuonCF->SetCFManager(managerCF);
    taskMuonCF->SetQAList(qaList);
    taskMuonCF->SetUseMC(isMC);

    AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
    mgr->SetAnalysisType(AliAnalysisManager::kLocalAnalysis);
    
    AliMCEventHandler*  mcHandler = new AliMCEventHandler();
    mgr->SetMCtruthEventHandler(mcHandler);

//  AliInputEventHandler* dataHandler ;
//  dataHandler = new AliESDInputHandler();
//  mgr->SetInputEventHandler(dataHandler);

    AliESDInputHandler *esdHandler = new AliESDInputHandler();
    esdHandler->SetReadFriends(kFALSE);
    mgr->SetInputEventHandler(esdHandler);


    AliAnalysisDataContainer *cinput0  = mgr->CreateContainer("cchain0",TChain::Class(),AliAnalysisManager::kInputContainer);
    cinput0->SetData(analysisChain);

    mgr->AddTask(taskMuonCF);
    mgr->ConnectInput(taskMuonCF, 0, mgr->GetCommonInputContainer());  

    Char_t fileName[256];
    sprintf(fileName,"muonCF_%d_%d.root",runmin,runmax);
    printf("Analysis output in %s \n",fileName);

    mgr->ConnectOutput(taskMuonCF,1,mgr->CreateContainer("chist",TH1I::Class(),AliAnalysisManager::kOutputContainer,fileName));
    mgr->ConnectOutput(taskMuonCF,2,mgr->CreateContainer("ccont",AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,fileName));
 
    printf("READY TO RUN\n");
    //RUN !!!
    if (mgr->InitAnalysis()) {
	mgr->PrintStatus();
	mgr->StartAnalysis("local",analysisChain);
  }
    benchmark.Stop("AliMuonSingleTask1");
    benchmark.Show("AliMuonSingleTask1");

    return kTRUE ;
}

void Load() {

  //load the required aliroot libraries
    gSystem->Load("libANALYSIS") ;
    gSystem->Load("libANALYSISalice") ;
    gSystem->Load("$ALICE_ROOT/lib/tgt_linux/libCORRFW.so") ;

  //compile online the task class
    gSystem->SetIncludePath("-I. -I$ALICE_ROOT/include -I$ALICE_ROOT/MUON -I$ALICE_ROOT/STEER -I$ROOTSYS/include");
    gROOT->LoadMacro("./AliCFMuonSingleTask1.cxx+");
}
 AliCFMuonSingleTask1.C:1
 AliCFMuonSingleTask1.C:2
 AliCFMuonSingleTask1.C:3
 AliCFMuonSingleTask1.C:4
 AliCFMuonSingleTask1.C:5
 AliCFMuonSingleTask1.C:6
 AliCFMuonSingleTask1.C:7
 AliCFMuonSingleTask1.C:8
 AliCFMuonSingleTask1.C:9
 AliCFMuonSingleTask1.C:10
 AliCFMuonSingleTask1.C:11
 AliCFMuonSingleTask1.C:12
 AliCFMuonSingleTask1.C:13
 AliCFMuonSingleTask1.C:14
 AliCFMuonSingleTask1.C:15
 AliCFMuonSingleTask1.C:16
 AliCFMuonSingleTask1.C:17
 AliCFMuonSingleTask1.C:18
 AliCFMuonSingleTask1.C:19
 AliCFMuonSingleTask1.C:20
 AliCFMuonSingleTask1.C:21
 AliCFMuonSingleTask1.C:22
 AliCFMuonSingleTask1.C:23
 AliCFMuonSingleTask1.C:24
 AliCFMuonSingleTask1.C:25
 AliCFMuonSingleTask1.C:26
 AliCFMuonSingleTask1.C:27
 AliCFMuonSingleTask1.C:28
 AliCFMuonSingleTask1.C:29
 AliCFMuonSingleTask1.C:30
 AliCFMuonSingleTask1.C:31
 AliCFMuonSingleTask1.C:32
 AliCFMuonSingleTask1.C:33
 AliCFMuonSingleTask1.C:34
 AliCFMuonSingleTask1.C:35
 AliCFMuonSingleTask1.C:36
 AliCFMuonSingleTask1.C:37
 AliCFMuonSingleTask1.C:38
 AliCFMuonSingleTask1.C:39
 AliCFMuonSingleTask1.C:40
 AliCFMuonSingleTask1.C:41
 AliCFMuonSingleTask1.C:42
 AliCFMuonSingleTask1.C:43
 AliCFMuonSingleTask1.C:44
 AliCFMuonSingleTask1.C:45
 AliCFMuonSingleTask1.C:46
 AliCFMuonSingleTask1.C:47
 AliCFMuonSingleTask1.C:48
 AliCFMuonSingleTask1.C:49
 AliCFMuonSingleTask1.C:50
 AliCFMuonSingleTask1.C:51
 AliCFMuonSingleTask1.C:52
 AliCFMuonSingleTask1.C:53
 AliCFMuonSingleTask1.C:54
 AliCFMuonSingleTask1.C:55
 AliCFMuonSingleTask1.C:56
 AliCFMuonSingleTask1.C:57
 AliCFMuonSingleTask1.C:58
 AliCFMuonSingleTask1.C:59
 AliCFMuonSingleTask1.C:60
 AliCFMuonSingleTask1.C:61
 AliCFMuonSingleTask1.C:62
 AliCFMuonSingleTask1.C:63
 AliCFMuonSingleTask1.C:64
 AliCFMuonSingleTask1.C:65
 AliCFMuonSingleTask1.C:66
 AliCFMuonSingleTask1.C:67
 AliCFMuonSingleTask1.C:68
 AliCFMuonSingleTask1.C:69
 AliCFMuonSingleTask1.C:70
 AliCFMuonSingleTask1.C:71
 AliCFMuonSingleTask1.C:72
 AliCFMuonSingleTask1.C:73
 AliCFMuonSingleTask1.C:74
 AliCFMuonSingleTask1.C:75
 AliCFMuonSingleTask1.C:76
 AliCFMuonSingleTask1.C:77
 AliCFMuonSingleTask1.C:78
 AliCFMuonSingleTask1.C:79
 AliCFMuonSingleTask1.C:80
 AliCFMuonSingleTask1.C:81
 AliCFMuonSingleTask1.C:82
 AliCFMuonSingleTask1.C:83
 AliCFMuonSingleTask1.C:84
 AliCFMuonSingleTask1.C:85
 AliCFMuonSingleTask1.C:86
 AliCFMuonSingleTask1.C:87
 AliCFMuonSingleTask1.C:88
 AliCFMuonSingleTask1.C:89
 AliCFMuonSingleTask1.C:90
 AliCFMuonSingleTask1.C:91
 AliCFMuonSingleTask1.C:92
 AliCFMuonSingleTask1.C:93
 AliCFMuonSingleTask1.C:94
 AliCFMuonSingleTask1.C:95
 AliCFMuonSingleTask1.C:96
 AliCFMuonSingleTask1.C:97
 AliCFMuonSingleTask1.C:98
 AliCFMuonSingleTask1.C:99
 AliCFMuonSingleTask1.C:100
 AliCFMuonSingleTask1.C:101
 AliCFMuonSingleTask1.C:102
 AliCFMuonSingleTask1.C:103
 AliCFMuonSingleTask1.C:104
 AliCFMuonSingleTask1.C:105
 AliCFMuonSingleTask1.C:106
 AliCFMuonSingleTask1.C:107
 AliCFMuonSingleTask1.C:108
 AliCFMuonSingleTask1.C:109
 AliCFMuonSingleTask1.C:110