--- /dev/null
+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, 100 , 3 , 100 };
+ Double_t min[] = { -4.,-4. ,-180., 0., 0., 0., 0., -0.5, 0., -2.5, 0., -100., 0., 0., -3000., 0., -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., 100., 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+");
+}
fNevt++;
fCFManager->SetEventInfo(fMCEvent);
- Double_t containerInput[17] ;
+ Double_t containerInput[18] ;
////////
//// MC
Float_t chargemc=0;
if(pdg==13) chargemc=-1;
if(pdg==-13) chargemc=1;
+ Float_t thetamc;
+ thetamc = TMath::Abs(-TMath::Pi()+TMath::ASin(ptmc/pmc)); // convention for EVGEN
+ Float_t ymc = part->Vy();
+ Float_t xmc = part->Vx();
+ Float_t rmc = TMath::Sqrt(xmc*xmc+ymc*ymc);
containerInput[0] = etamc ;
containerInput[1] = rapmc ;
containerInput[4] = pmc ;
containerInput[14] = zmc ;
containerInput[16] = chargemc ;
+ containerInput[17] = thetamc ;
// 10 var calculated only for ESD .i.e set at 1 in MC step
for(Int_t i=5; i<=13; i++){
containerInput[i] = 1;
}
- containerInput[7]=3;
- containerInput[15] = 25 ; // rabsmc
+
+ containerInput[7] = 3;
+ containerInput[10] = rmc ; // radius at production
+ containerInput[15] = 45 ; // rabsmc
// fill the container at the first step
fCFManager->GetParticleContainer()->Fill(containerInput,0);
}
}
}
-
+
////////
//// ESD
Float_t vx = -200 , vy = -200 , vz = -200, vt=-200;
- Double_t Ncont = 0.; // mmmmmmmmmodified
+ Double_t Ncont = 0.;
AliESDVertex* vertex = (AliESDVertex*) fESD->GetVertex();
if (vertex->GetNContributors()) {
vz = vertex->GetZv();
Float_t zr = mu1->GetZ();
Float_t etar = mu1->Eta();
Float_t rabs = mu1->GetRAtAbsorberEnd();
+ Float_t thetar ;
+ thetar = TMath::Abs(-TMath::Pi()+TMath::ASin(ptr/pr));
// rapidity and Pt cuts (default -4<y<-2.5 et 0<pt<20)
if (!fCFManager->CheckParticleCuts(AliCFManager::kPartAccCuts,mu1)) continue;
containerInput[14] = zr ;
containerInput[15] = rabs ;
containerInput[16] = charger ;
+ containerInput[17] = thetar ;
// fill the container at the second step (for simu, first for data)
if(fIsMC){
AliCFContainer *cont = dynamic_cast<AliCFContainer*> (GetOutputData(2));
- TH1D *kpt = cont->ShowProjection(3,0);
-// TH1D *rpt = cont->ShowProjection(3,1);
+ TH1D *kpt = cont->ShowProjection(16,0);
+ TH1D *rpt = cont->ShowProjection(16,1);
TCanvas *c1 = new TCanvas("AliCFMuonSingleTask1"," MC & ESD",10,10,510,510);
c1->Divide(1,2);
c1->cd(1);
kpt->Draw("HIST");
-// c1->cd(2);
-// rpt->Draw("HIST");
+ c1->cd(2);
+ rpt->Draw("HIST");
}
//________________________________________________________________________