From fc32367fcc1eeaf2511224601850ecd5a5a72eb9 Mon Sep 17 00:00:00 2001 From: martinez Date: Fri, 17 Sep 2010 07:21:27 +0000 Subject: [PATCH] Addition of the theta variable. New macro (Xavier) --- PWG3/muon/AliCFMuonSingleTask1.C | 109 +++++++++++++++++++++++++++++ PWG3/muon/AliCFMuonSingleTask1.cxx | 29 +++++--- 2 files changed, 129 insertions(+), 9 deletions(-) create mode 100644 PWG3/muon/AliCFMuonSingleTask1.C diff --git a/PWG3/muon/AliCFMuonSingleTask1.C b/PWG3/muon/AliCFMuonSingleTask1.C new file mode 100644 index 00000000000..3cf149765c6 --- /dev/null +++ b/PWG3/muon/AliCFMuonSingleTask1.C @@ -0,0 +1,109 @@ +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+"); +} diff --git a/PWG3/muon/AliCFMuonSingleTask1.cxx b/PWG3/muon/AliCFMuonSingleTask1.cxx index ebede9a17a2..d089ff4990d 100644 --- a/PWG3/muon/AliCFMuonSingleTask1.cxx +++ b/PWG3/muon/AliCFMuonSingleTask1.cxx @@ -145,7 +145,7 @@ void AliCFMuonSingleTask1::UserExec(Option_t *) fNevt++; fCFManager->SetEventInfo(fMCEvent); - Double_t containerInput[17] ; + Double_t containerInput[18] ; //////// //// MC @@ -179,6 +179,11 @@ void AliCFMuonSingleTask1::UserExec(Option_t *) 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 ; @@ -187,20 +192,23 @@ void AliCFMuonSingleTask1::UserExec(Option_t *) 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 @@ -227,7 +235,7 @@ void AliCFMuonSingleTask1::UserExec(Option_t *) 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(); @@ -262,6 +270,8 @@ void AliCFMuonSingleTask1::UserExec(Option_t *) 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 -4CheckParticleCuts(AliCFManager::kPartAccCuts,mu1)) continue; @@ -283,6 +293,7 @@ void AliCFMuonSingleTask1::UserExec(Option_t *) 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){ @@ -332,15 +343,15 @@ void AliCFMuonSingleTask1::Terminate(Option_t *) AliCFContainer *cont = dynamic_cast (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"); } //________________________________________________________________________ -- 2.43.0