// VARIABLES RANGES
const Double_t ymin = -4.0 ;
const Double_t ymax = -2.5 ;
const Double_t ptmin = 0.0 ;
const Double_t ptmax = 20. ;
const Double_t cCSmin = -1. ;
const Double_t cCSmax = 1. ;
const Double_t cHEmin = -1. ;
const Double_t cHEmax = 1. ;
const Double_t pCSmin = 0. ;
const Double_t pCSmax = TMath::Pi();
const Double_t pHEmin = 0. ;
const Double_t pHEmax = TMath::Pi();
const Double_t massmin = 0. ;
const Double_t massmax = 12. ;
const Double_t trigmin = 0. ;
const Double_t trigmax = 4. ;
const Double_t ptmuminMIN = 0. ;
const Double_t ptmuminMAX = 100. ;
const Double_t ptmumaxMIN = 0. ;
const Double_t ptmumaxMAX = 100. ;
const Double_t thetamuminMIN = 0. ;
const Double_t thetamuminMAX = 180. ;
const Double_t thetamumaxMIN = 0. ;
const Double_t thetamumaxMAX = 180. ;
const Double_t pmuminMIN = 0. ;
const Double_t pmuminMAX = 100. ;
const Double_t pmumaxMIN = 0. ;
const Double_t pmumaxMAX = 100. ;
const Double_t trigsideMIN = 0 ;
const Double_t trigsideMAX = 4 ;
AliAnalysisTaskDimuonCFContainerBuilder *AddTaskDimuonCFContainerBuilder(Bool_t readAOD=kTRUE, Bool_t readMC=kTRUE,
Bool_t isaccept = kTRUE, Double_t beamEn=3500)
{
// Check and Info printings
//==============================================================================
if(!readMC && isaccept) {
printf("ERROR: incompatible choice readMC-isaccept. If isaccept you must readMC!\n");
return NULL;
} else if (readMC && isaccept) printf("Creating task for filling a CFcontainer with acceptance data.\n");
else if (readMC && !isaccept) printf("Creating task for filling a CFcontainer with simulated data.\n");
else printf("Creating task for filling a CFcontainer with real data.\n");
// Get the pointer to the existing analysis manager via the static access method.
//==============================================================================
AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
if (!mgr) {
::Error("AddDataTaskMuonPolarCF", "No analysis manager to connect to.");
return NULL;
}
// MC handler if needed
//==============================================================================
if(!readAOD && readMC){
AliMCEventHandler *mcH = (AliMCEventHandler*)mgr->GetMCtruthEventHandler();
if (!mcH) {
::Error("AddDataTaskMuonPolarCF", "No MC handler connected");
return NULL;
}
}
// DEFINING CONTAINER
//==============================================================================
UInt_t y = 0; // Association of variables with int numbers
UInt_t pt = 1;
UInt_t costHE = 2;
UInt_t phiHE = 3;
UInt_t costCS = 4;
UInt_t phiCS = 5;
UInt_t mass = 6;
UInt_t trig = 7;
UInt_t ptmumin = 8;
UInt_t ptmumax = 9;
UInt_t thetamumin=10;
UInt_t thetamumax=11;
UInt_t pmumin =12;
UInt_t pmumax =13;
UInt_t trigside =14;
UInt_t nstep = 8; // Number of layers (always 8 - not always filled). 4 with CINT and 4 with CMU
const Int_t nvar = 15 ; // Number of variables of the grid
const Int_t nbin1 = 10 ; // Number of bins for each variable
const Int_t nbin2 = 10 ;
const Int_t nbin3 = 20 ;
const Int_t nbin4 = 20 ;
const Int_t nbin5 = 20 ;
const Int_t nbin6 = 20 ;
const Int_t nbin7 = 240;
const Int_t nbin8 = 40 ;
const Int_t nbin9 = 100;
const Int_t nbin10 = 100;
const Int_t nbin11 = 180;
const Int_t nbin12 = 180;
const Int_t nbin13 = 100;
const Int_t nbin14 = 100;
const Int_t nbin15 = 4 ;
Int_t iBin[nvar]; // Array containing the number of bins for each variable
iBin[0] =nbin1;
iBin[1] =nbin2;
iBin[2] =nbin3;
iBin[3] =nbin4;
iBin[4] =nbin5;
iBin[5] =nbin6;
iBin[6] =nbin7;
iBin[7] =nbin8;
iBin[8] =nbin9;
iBin[9] =nbin10;
iBin[10]=nbin11;
iBin[11]=nbin12;
iBin[12]=nbin13;
iBin[13]=nbin14;
iBin[14]=nbin15;
Double_t *binLim1 = new Double_t[nbin1+1]; // Arrays for lower bounds
Double_t *binLim2 = new Double_t[nbin2+1];
Double_t *binLim3 = new Double_t[nbin3+1];
Double_t *binLim4 = new Double_t[nbin4+1];
Double_t *binLim5 = new Double_t[nbin5+1];
Double_t *binLim6 = new Double_t[nbin6+1];
Double_t *binLim7 = new Double_t[nbin7+1];
Double_t *binLim8 = new Double_t[nbin8+1];
Double_t *binLim9 = new Double_t[nbin9+1];
Double_t *binLim10= new Double_t[nbin10+1];
Double_t *binLim11= new Double_t[nbin11+1];
Double_t *binLim12= new Double_t[nbin12+1];
Double_t *binLim13= new Double_t[nbin13+1];
Double_t *binLim14= new Double_t[nbin14+1];
Double_t *binLim15= new Double_t[nbin15+1];
for(Int_t i=0; i<=nbin1; i++) binLim1[i] =(Double_t)ymin+(ymax-ymin)/nbin1*(Double_t)i;
for(Int_t i=0; i<=nbin2; i++) binLim2[i] =(Double_t)ptmin+(ptmax-ptmin)/nbin2*(Double_t)i;
for(Int_t i=0; i<=nbin3; i++) binLim3[i] =(Double_t)cHEmin+(cHEmax-cHEmin)/nbin3*(Double_t)i ;
for(Int_t i=0; i<=nbin4; i++) binLim4[i] =(Double_t)pHEmin+(pHEmax-pHEmin)/nbin4*(Double_t)i ;
for(Int_t i=0; i<=nbin5; i++) binLim5[i] =(Double_t)cCSmin+(cCSmax-cCSmin)/nbin5*(Double_t)i ;
for(Int_t i=0; i<=nbin6; i++) binLim6[i] =(Double_t)pCSmin+(pCSmax-pCSmin)/nbin6*(Double_t)i ;
for(Int_t i=0; i<=nbin7; i++) binLim7[i] =(Double_t)massmin+(massmax-massmin)/nbin7*(Double_t)i ;
for(Int_t i=0; i<=nbin8; i++) binLim8[i] =(Double_t)trigmin+(trigmax-trigmin)/nbin8*(Double_t)i ;
for(Int_t i=0; i<=nbin9; i++) binLim9[i] =(Double_t)ptmuminMIN+(ptmuminMAX-ptmuminMIN)/nbin9*(Double_t)i ;
for(Int_t i=0; i<=nbin10;i++) binLim10[i]=(Double_t)ptmumaxMIN+(ptmumaxMAX-ptmumaxMIN)/nbin10*(Double_t)i ;
for(Int_t i=0; i<=nbin11;i++) binLim11[i]=(Double_t)thetamuminMIN+(thetamuminMAX-thetamuminMIN)/nbin11*(Double_t)i ;
for(Int_t i=0; i<=nbin12;i++) binLim12[i]=(Double_t)thetamumaxMIN+(thetamumaxMAX-thetamumaxMIN)/nbin12*(Double_t)i ;
for(Int_t i=0; i<=nbin13;i++) binLim13[i]=(Double_t)pmuminMIN+(pmuminMAX-pmuminMIN)/nbin13*(Double_t)i ;
for(Int_t i=0; i<=nbin14;i++) binLim14[i]=(Double_t)pmumaxMIN+(pmumaxMAX-pmumaxMIN)/nbin14*(Double_t)i ;
for(Int_t i=0; i<=nbin15;i++) binLim15[i]=(Double_t)trigsideMIN+(trigsideMAX-trigsideMIN)/nbin15*(Double_t)i ;
AliCFContainer* container = new AliCFContainer("container","Container for Dimuons",nstep,nvar,iBin);
container -> SetBinLimits(y,binLim1); // setting the bin limits
container -> SetBinLimits(pt,binLim2);
container -> SetBinLimits(costHE,binLim3);
container -> SetBinLimits(phiHE,binLim4);
container -> SetBinLimits(costCS,binLim5);
container -> SetBinLimits(phiCS,binLim6);
container -> SetBinLimits(mass,binLim7);
container -> SetBinLimits(trig,binLim8);
container -> SetBinLimits(ptmumin,binLim9);
container -> SetBinLimits(ptmumax,binLim10);
container -> SetBinLimits(thetamumin,binLim11);
container -> SetBinLimits(thetamumax,binLim12);
container -> SetBinLimits(pmumin,binLim13);
container -> SetBinLimits(pmumax,binLim14);
container -> SetBinLimits(trigside,binLim15);
// CF Manager
//==============================================================================
AliCFManager* man = new AliCFManager() ;
man->SetParticleContainer(container);
// Outputs: list of histograms + CFContainer
//==============================================================================
TString outputfile = AliAnalysisManager::GetCommonFileName();
outputfile += ":PWG3Muon_DimuonCFContainer";
AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("Histos",TList::Class(),AliAnalysisManager::kOutputContainer,outputfile);
AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("DimuonCFContainer",AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,outputfile);
// The task with the associtated CF manager
//==============================================================================
AliAnalysisTaskDimuonCFContainerBuilder *task = new AliAnalysisTaskDimuonCFContainerBuilder("AliAnalysisTaskDimuonCFContainerBuilder",readAOD,readMC,isaccept,beamEn);
task->SetCFManager(man);
// Additional settings for the task (including some cuts)
//==============================================================================
//task->SetDistinguishTrigClass(kTRUE);
//task->SetReadMCinfo(kTRUE);
//Double_t ptlimits[2]={1.,1000.};
//task->SetPtSingMuLimits(ptlimits);
//task->SetCutonZvtxSPD(kTRUE);
//Double_t vtxlimits[2]={-10.,10.};
//task->SetZprimVertLimits(vtxlimits);
// Adding the task to the analysis manager and connecting inputs and outputs
//==============================================================================
mgr->AddTask(task);
mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
mgr->ConnectOutput(task,1,coutput1);
mgr->ConnectOutput(task,2,coutput2);
return task;
}
AddTaskDimuonCFContainerBuilder.C:1 AddTaskDimuonCFContainerBuilder.C:2 AddTaskDimuonCFContainerBuilder.C:3 AddTaskDimuonCFContainerBuilder.C:4 AddTaskDimuonCFContainerBuilder.C:5 AddTaskDimuonCFContainerBuilder.C:6 AddTaskDimuonCFContainerBuilder.C:7 AddTaskDimuonCFContainerBuilder.C:8 AddTaskDimuonCFContainerBuilder.C:9 AddTaskDimuonCFContainerBuilder.C:10 AddTaskDimuonCFContainerBuilder.C:11 AddTaskDimuonCFContainerBuilder.C:12 AddTaskDimuonCFContainerBuilder.C:13 AddTaskDimuonCFContainerBuilder.C:14 AddTaskDimuonCFContainerBuilder.C:15 AddTaskDimuonCFContainerBuilder.C:16 AddTaskDimuonCFContainerBuilder.C:17 AddTaskDimuonCFContainerBuilder.C:18 AddTaskDimuonCFContainerBuilder.C:19 AddTaskDimuonCFContainerBuilder.C:20 AddTaskDimuonCFContainerBuilder.C:21 AddTaskDimuonCFContainerBuilder.C:22 AddTaskDimuonCFContainerBuilder.C:23 AddTaskDimuonCFContainerBuilder.C:24 AddTaskDimuonCFContainerBuilder.C:25 AddTaskDimuonCFContainerBuilder.C:26 AddTaskDimuonCFContainerBuilder.C:27 AddTaskDimuonCFContainerBuilder.C:28 AddTaskDimuonCFContainerBuilder.C:29 AddTaskDimuonCFContainerBuilder.C:30 AddTaskDimuonCFContainerBuilder.C:31 AddTaskDimuonCFContainerBuilder.C:32 AddTaskDimuonCFContainerBuilder.C:33 AddTaskDimuonCFContainerBuilder.C:34 AddTaskDimuonCFContainerBuilder.C:35 AddTaskDimuonCFContainerBuilder.C:36 AddTaskDimuonCFContainerBuilder.C:37 AddTaskDimuonCFContainerBuilder.C:38 AddTaskDimuonCFContainerBuilder.C:39 AddTaskDimuonCFContainerBuilder.C:40 AddTaskDimuonCFContainerBuilder.C:41 AddTaskDimuonCFContainerBuilder.C:42 AddTaskDimuonCFContainerBuilder.C:43 AddTaskDimuonCFContainerBuilder.C:44 AddTaskDimuonCFContainerBuilder.C:45 AddTaskDimuonCFContainerBuilder.C:46 AddTaskDimuonCFContainerBuilder.C:47 AddTaskDimuonCFContainerBuilder.C:48 AddTaskDimuonCFContainerBuilder.C:49 AddTaskDimuonCFContainerBuilder.C:50 AddTaskDimuonCFContainerBuilder.C:51 AddTaskDimuonCFContainerBuilder.C:52 AddTaskDimuonCFContainerBuilder.C:53 AddTaskDimuonCFContainerBuilder.C:54 AddTaskDimuonCFContainerBuilder.C:55 AddTaskDimuonCFContainerBuilder.C:56 AddTaskDimuonCFContainerBuilder.C:57 AddTaskDimuonCFContainerBuilder.C:58 AddTaskDimuonCFContainerBuilder.C:59 AddTaskDimuonCFContainerBuilder.C:60 AddTaskDimuonCFContainerBuilder.C:61 AddTaskDimuonCFContainerBuilder.C:62 AddTaskDimuonCFContainerBuilder.C:63 AddTaskDimuonCFContainerBuilder.C:64 AddTaskDimuonCFContainerBuilder.C:65 AddTaskDimuonCFContainerBuilder.C:66 AddTaskDimuonCFContainerBuilder.C:67 AddTaskDimuonCFContainerBuilder.C:68 AddTaskDimuonCFContainerBuilder.C:69 AddTaskDimuonCFContainerBuilder.C:70 AddTaskDimuonCFContainerBuilder.C:71 AddTaskDimuonCFContainerBuilder.C:72 AddTaskDimuonCFContainerBuilder.C:73 AddTaskDimuonCFContainerBuilder.C:74 AddTaskDimuonCFContainerBuilder.C:75 AddTaskDimuonCFContainerBuilder.C:76 AddTaskDimuonCFContainerBuilder.C:77 AddTaskDimuonCFContainerBuilder.C:78 AddTaskDimuonCFContainerBuilder.C:79 AddTaskDimuonCFContainerBuilder.C:80 AddTaskDimuonCFContainerBuilder.C:81 AddTaskDimuonCFContainerBuilder.C:82 AddTaskDimuonCFContainerBuilder.C:83 AddTaskDimuonCFContainerBuilder.C:84 AddTaskDimuonCFContainerBuilder.C:85 AddTaskDimuonCFContainerBuilder.C:86 AddTaskDimuonCFContainerBuilder.C:87 AddTaskDimuonCFContainerBuilder.C:88 AddTaskDimuonCFContainerBuilder.C:89 AddTaskDimuonCFContainerBuilder.C:90 AddTaskDimuonCFContainerBuilder.C:91 AddTaskDimuonCFContainerBuilder.C:92 AddTaskDimuonCFContainerBuilder.C:93 AddTaskDimuonCFContainerBuilder.C:94 AddTaskDimuonCFContainerBuilder.C:95 AddTaskDimuonCFContainerBuilder.C:96 AddTaskDimuonCFContainerBuilder.C:97 AddTaskDimuonCFContainerBuilder.C:98 AddTaskDimuonCFContainerBuilder.C:99 AddTaskDimuonCFContainerBuilder.C:100 AddTaskDimuonCFContainerBuilder.C:101 AddTaskDimuonCFContainerBuilder.C:102 AddTaskDimuonCFContainerBuilder.C:103 AddTaskDimuonCFContainerBuilder.C:104 AddTaskDimuonCFContainerBuilder.C:105 AddTaskDimuonCFContainerBuilder.C:106 AddTaskDimuonCFContainerBuilder.C:107 AddTaskDimuonCFContainerBuilder.C:108 AddTaskDimuonCFContainerBuilder.C:109 AddTaskDimuonCFContainerBuilder.C:110 AddTaskDimuonCFContainerBuilder.C:111 AddTaskDimuonCFContainerBuilder.C:112 AddTaskDimuonCFContainerBuilder.C:113 AddTaskDimuonCFContainerBuilder.C:114 AddTaskDimuonCFContainerBuilder.C:115 AddTaskDimuonCFContainerBuilder.C:116 AddTaskDimuonCFContainerBuilder.C:117 AddTaskDimuonCFContainerBuilder.C:118 AddTaskDimuonCFContainerBuilder.C:119 AddTaskDimuonCFContainerBuilder.C:120 AddTaskDimuonCFContainerBuilder.C:121 AddTaskDimuonCFContainerBuilder.C:122 AddTaskDimuonCFContainerBuilder.C:123 AddTaskDimuonCFContainerBuilder.C:124 AddTaskDimuonCFContainerBuilder.C:125 AddTaskDimuonCFContainerBuilder.C:126 AddTaskDimuonCFContainerBuilder.C:127 AddTaskDimuonCFContainerBuilder.C:128 AddTaskDimuonCFContainerBuilder.C:129 AddTaskDimuonCFContainerBuilder.C:130 AddTaskDimuonCFContainerBuilder.C:131 AddTaskDimuonCFContainerBuilder.C:132 AddTaskDimuonCFContainerBuilder.C:133 AddTaskDimuonCFContainerBuilder.C:134 AddTaskDimuonCFContainerBuilder.C:135 AddTaskDimuonCFContainerBuilder.C:136 AddTaskDimuonCFContainerBuilder.C:137 AddTaskDimuonCFContainerBuilder.C:138 AddTaskDimuonCFContainerBuilder.C:139 AddTaskDimuonCFContainerBuilder.C:140 AddTaskDimuonCFContainerBuilder.C:141 AddTaskDimuonCFContainerBuilder.C:142 AddTaskDimuonCFContainerBuilder.C:143 AddTaskDimuonCFContainerBuilder.C:144 AddTaskDimuonCFContainerBuilder.C:145 AddTaskDimuonCFContainerBuilder.C:146 AddTaskDimuonCFContainerBuilder.C:147 AddTaskDimuonCFContainerBuilder.C:148 AddTaskDimuonCFContainerBuilder.C:149 AddTaskDimuonCFContainerBuilder.C:150 AddTaskDimuonCFContainerBuilder.C:151 AddTaskDimuonCFContainerBuilder.C:152 AddTaskDimuonCFContainerBuilder.C:153 AddTaskDimuonCFContainerBuilder.C:154 AddTaskDimuonCFContainerBuilder.C:155 AddTaskDimuonCFContainerBuilder.C:156 AddTaskDimuonCFContainerBuilder.C:157 AddTaskDimuonCFContainerBuilder.C:158 AddTaskDimuonCFContainerBuilder.C:159 AddTaskDimuonCFContainerBuilder.C:160 AddTaskDimuonCFContainerBuilder.C:161 AddTaskDimuonCFContainerBuilder.C:162 AddTaskDimuonCFContainerBuilder.C:163 AddTaskDimuonCFContainerBuilder.C:164 AddTaskDimuonCFContainerBuilder.C:165 AddTaskDimuonCFContainerBuilder.C:166 AddTaskDimuonCFContainerBuilder.C:167 AddTaskDimuonCFContainerBuilder.C:168 AddTaskDimuonCFContainerBuilder.C:169 AddTaskDimuonCFContainerBuilder.C:170 AddTaskDimuonCFContainerBuilder.C:171 AddTaskDimuonCFContainerBuilder.C:172 AddTaskDimuonCFContainerBuilder.C:173 AddTaskDimuonCFContainerBuilder.C:174 AddTaskDimuonCFContainerBuilder.C:175 AddTaskDimuonCFContainerBuilder.C:176 AddTaskDimuonCFContainerBuilder.C:177 AddTaskDimuonCFContainerBuilder.C:178 AddTaskDimuonCFContainerBuilder.C:179 AddTaskDimuonCFContainerBuilder.C:180 AddTaskDimuonCFContainerBuilder.C:181 AddTaskDimuonCFContainerBuilder.C:182 AddTaskDimuonCFContainerBuilder.C:183 AddTaskDimuonCFContainerBuilder.C:184 AddTaskDimuonCFContainerBuilder.C:185 AddTaskDimuonCFContainerBuilder.C:186 AddTaskDimuonCFContainerBuilder.C:187 AddTaskDimuonCFContainerBuilder.C:188 AddTaskDimuonCFContainerBuilder.C:189 AddTaskDimuonCFContainerBuilder.C:190 AddTaskDimuonCFContainerBuilder.C:191 AddTaskDimuonCFContainerBuilder.C:192 AddTaskDimuonCFContainerBuilder.C:193 AddTaskDimuonCFContainerBuilder.C:194 AddTaskDimuonCFContainerBuilder.C:195 AddTaskDimuonCFContainerBuilder.C:196 AddTaskDimuonCFContainerBuilder.C:197 AddTaskDimuonCFContainerBuilder.C:198 AddTaskDimuonCFContainerBuilder.C:199 AddTaskDimuonCFContainerBuilder.C:200 AddTaskDimuonCFContainerBuilder.C:201 AddTaskDimuonCFContainerBuilder.C:202 AddTaskDimuonCFContainerBuilder.C:203 AddTaskDimuonCFContainerBuilder.C:204 AddTaskDimuonCFContainerBuilder.C:205 AddTaskDimuonCFContainerBuilder.C:206 AddTaskDimuonCFContainerBuilder.C:207 AddTaskDimuonCFContainerBuilder.C:208 AddTaskDimuonCFContainerBuilder.C:209 AddTaskDimuonCFContainerBuilder.C:210 AddTaskDimuonCFContainerBuilder.C:211 AddTaskDimuonCFContainerBuilder.C:212 AddTaskDimuonCFContainerBuilder.C:213 AddTaskDimuonCFContainerBuilder.C:214 AddTaskDimuonCFContainerBuilder.C:215