ROOT logo
// definition of variables ranges
const Double_t nevtmin 	= 0;			
const Double_t nevtmax 	= 5;

const Double_t trigmin 	= 0;
const Double_t trigmax 	= 4;
const Int_t trigsidemin = 0;	
const Int_t trigsidemax = 4;
const Int_t chargemin		= -3;	
const Int_t chargemax		= 3;

const Double_t ymin  		= -4.5; 
const Double_t ymax  		= -2.0;
const Double_t etamin		= -4.5; 
const Double_t etamax		= -2.0;
const Double_t rabsmin 	= 15;	
const Double_t rabsmax 	= 90;
const Double_t ptmin 		= 0;	
const Double_t ptmax 		= 100;
const Double_t thabsmin = 170;
const Double_t thabsmax = 180;
const Double_t vzmin  = -50;	
const Double_t vzmax  = 50;		
const Double_t dcamin  = 0;		
const Double_t dcamax  = 100;		
const Double_t pmin 		= 0;			
const Double_t pmax 		= 100;	
const Double_t mmin 		= 0;	
const Double_t mmax 		= 15;		

// Resonances
const Int_t PDG = 553;	// Upsilon

///// Setting up the container grid

// CONTAINER DEFINITION
UInt_t nevent			= 0;					// number of event
UInt_t y  				= 1;					// dimuon rapidity
UInt_t pt 				= 2;					// dimuon pt
UInt_t imass  		= 3;					// dimuon invariant mass
UInt_t trig  			= 4;					// single muon track-trigger matching
UInt_t ptmu		 		= 5;					// single muon pt
UInt_t pmu 				= 6;				  // single muon p
UInt_t trigside 	= 7;					// event trigger side (AC, B, E)
UInt_t rabsmu		 	= 8;					// single muon Rabs
UInt_t charge		  = 9;					// total charge of dimuon tracks
UInt_t etamu			= 10;					// single muon eta
UInt_t thabsmu		= 11;					// single muon theta_abs
UInt_t vzmu				= 12;					// single muon Vz
UInt_t dcamu			= 13;					// single muon DCA



// Setting up the container grid
UInt_t nstep = 5 ; //number of selection steps : MC and ESD for simulation, CINT1B, CMUS1B for real data

const Int_t nvar   	= 14;     	//number of variables on the grid
const Int_t nbin1		= 5;	
const Int_t nbin2	  = 15;  	
const Int_t nbin3	  = 100;		
const Int_t nbin4	  = 300; 	
const Int_t nbin5	  = 40;	
const Int_t nbin6	  = 100;  	
const Int_t nbin7	  = 100; 	
const Int_t nbin8	  = 4; 	
const Int_t nbin9 	= 300;
const Int_t nbin10	= 6;		
const Int_t nbin11	= 100;	
const Int_t nbin12	= 200; 	
const Int_t nbin13 	= 100;	
const Int_t nbin14	= 100;	

class AliAnalysisGrid;
class TChain;

Bool_t AliCFMuonResUpsilon(
	const char* runtype = "local",						// local, proof or grid 
	const char* taskname = "CFMuonResUpsilon",	// task name
	const bool readAOD = 0,									// 1 = AOD based analysis
	const bool readMC = 0,										// 1 = Read MC
	const bool usePlugin = 0,								// grid mode : use plugin
	const char* gridmode = "test"						// plugin mode ("full","test","offline","submit" or "terminate"
	)
{

  //load the required aliroot libraries
  gSystem->Load("libCore.so");  
  gSystem->Load("libTree.so");
  gSystem->Load("libGeom.so");
  gSystem->Load("libVMC.so");
  gSystem->Load("libPhysics.so");
  gSystem->Load("libSTEERBase");
  gSystem->Load("libESD");
  gSystem->Load("libAOD") ;
  gSystem->Load("libANALYSIS") ;
  gSystem->Load("libANALYSISalice") ;

	//load correction framework library
  gSystem->Load("libCORRFW.so") ;

  //compile online the task class
  gSystem->SetIncludePath("-I. -I$ALICE_ROOT/include -I$ROOTSYS/include -I$ALICE_ROOT/PWG3/muon");
  gROOT->LoadMacro("./AliCFMuonResUpsilon.cxx++g");


	// Setting Container
	// -----------------------------------------------

	// arrays for the number of bins in each dimension
	Int_t iBin[nvar];
	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;

	// arrays for lower bounds :
	Double_t *binLim1=new Double_t[nbin1+1];
	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];

	// values for bin lower bounds
	for(Int_t i=0; i<=nbin1; i++) binLim1[i]=(Double_t)nevtmin+(nevtmax-nevtmin)/nbin1*(Double_t)i ;
	for(Int_t i=0; i<=nbin2; i++) binLim2[i]=(Double_t)ymin+(ymax-ymin)/nbin2*(Double_t)i ;
	for(Int_t i=0; i<=nbin3; i++) binLim3[i]=(Double_t)ptmin+(ptmax-ptmin)/nbin3*(Double_t)i ; 
	for(Int_t i=0; i<=nbin4; i++) binLim4[i]=(Double_t)mmin+(mmax-mmin)/nbin4*(Double_t)i ;
	for(Int_t i=0; i<=nbin5; i++) binLim5[i]=(Double_t)trigmin+(trigmax-trigmin)/nbin5*(Double_t)i ; 
	for(Int_t i=0; i<=nbin6; i++) binLim6[i]=(Double_t)ptmin+(ptmax-ptmin)/nbin6*(Double_t)i ;
	for(Int_t i=0; i<=nbin7; i++) binLim7[i]=(Double_t)pmin+(pmax-pmin)/nbin7*(Double_t)i ;
	for(Int_t i=0; i<=nbin8; i++) binLim8[i]=(Double_t)trigsidemin+(trigsidemax-trigsidemin)/nbin8*(Double_t)i ; 
	for(Int_t i=0; i<=nbin9; i++) binLim9[i]=(Double_t)rabsmin+(rabsmax-rabsmin)/nbin9*(Double_t)i ; 
	for(Int_t i=0; i<=nbin10; i++) binLim10[i]=(Double_t)chargemin+(chargemax-chargemin)/nbin10*(Double_t)i ; 
	for(Int_t i=0; i<=nbin11; i++) binLim11[i]=(Double_t)etamin+(etamax-etamin)/nbin11*(Double_t)i ; 
	for(Int_t i=0; i<=nbin12; i++) binLim12[i]=(Double_t)thabsmin+(thabsmax-thabsmin)/nbin12*(Double_t)i ;
	for(Int_t i=0; i<=nbin13; i++) binLim13[i]=(Double_t)vzmin+(vzmax-vzmin)/nbin13*(Double_t)i ;
	for(Int_t i=0; i<=nbin14; i++) binLim14[i]=(Double_t)dcamin+(dcamax-dcamin)/nbin14*(Double_t)i ;
	
	// one container  of 2 steps (MC and ESD) with 12 variables
	AliCFContainer* container = new AliCFContainer("container","container for tracks",nstep,nvar,iBin);
	// setting the bin limits
	container -> SetBinLimits(nevent,binLim1);
	container -> SetBinLimits(y,binLim2);
	container -> SetBinLimits(pt,binLim3);
	container -> SetBinLimits(imass,binLim4);
	container -> SetBinLimits(trig,binLim5);
	container -> SetBinLimits(ptmu,binLim6);
	container -> SetBinLimits(pmu,binLim7);
	container -> SetBinLimits(trigside,binLim8);
	container -> SetBinLimits(rabsmu,binLim9);
	container -> SetBinLimits(charge,binLim10);
	container -> SetBinLimits(etamu,binLim11);
	container -> SetBinLimits(thabsmu,binLim12);
	container -> SetBinLimits(vzmu,binLim13);
	container -> SetBinLimits(dcamu,binLim14);
	
	// create AliCFManager
  AliCFManager* man = new AliCFManager();
	// set particle container
  man->SetParticleContainer(container);

	// ----------------------------------------------

	// check run type
	if(runtype != "local" && runtype != "proof" && runtype != "grid") {
		printf("Incorrect runtype! choose \"local\", \"prootf\" or \"grid\"\n");
		return;
	}

	printf("runtype : %s\n", runtype);

  // Make the analysis manager
  AliAnalysisManager *mgr = new AliAnalysisManager(Form("%sAnalysis",taskname));

	// set run mode
  if (runtype == "grid" && usePlugin) {
		// grid mode
		// set package for grid(API,ROOT,ALIROOT)
		const char *package[3] = {"V1.1x","v5-28-00a","v4-21-18-AN"};

 		AliAnalysisGrid *alienHandler = CreateAlienHandler(taskname,gridmode,package);  
 		if (!alienHandler) return;

 		mgr->SetGridHandler(alienHandler);
  }
  else {
		// local mode
    if (readAOD) {
			// AOD
      analysisChain = new TChain("aodTree");

			if(readMC) {
				analysisChain->Add("/home/sahn/alice/mc_prod/PDC09/AODs-100421-100436v2/000/033/AliAODs.root");		// PDC09 AOD
				//analysisChain->Add("/home/sahn/alice/mc_prod/upsilon/local/run/muonAcc/residual/AODs/AliAODs.root");		// muon acceptance production with residual alignment AOD
			}
			else {
				analysisChain->Add("/home/sahn/alice/p2_prod/LHC10g/AODs/135658/019/AliAOD.Dimuons.root");		// LHC10g-run135658 AOD
				//analysisChain->Add("/home/sahn/alice/p2_prod/LHC10g/AODs/135658/020/AliAOD.Dimuons.root");		// LHC10g-run135658 AOD
			}
	  }
    else {
			// ESD
			analysisChain = new TChain("esdTree");
		
			if(readMC) {
				analysisChain->Add("/home/sahn/alice/mc_prod/upsilon/local/run/muonAcc/residual/005/AliESDs.root");		// muon acceptance production with residual alignment
			}
			else {
				analysisChain->Add("/home/sahn/alice/p2_prod/LHC10g/000135748/ESDs/pass1/10000135748001.150/AliESDs.root");		// LHC10g-run135748
			}
   	}
  }
  
  // create the task
  AliCFMuonResUpsilon *task = new AliCFMuonResUpsilon(taskname);

  // Set list
  TList* qaList = new TList();

  //CREATE THE CUTS
  // Choice of the Resonance
  if(readMC && !readAOD) {	
		AliCFParticleGenCuts* mcGenCuts = new AliCFParticleGenCuts("mcGenCuts","MC particle generation cuts");
  	mcGenCuts->SetRequirePdgCode(PDG);
  	mcGenCuts->SetQAOn(qaList);

  	// Set a pt range of the resonance
  	AliCFTrackKineCuts *mcKineCuts = new AliCFTrackKineCuts("mcKineCuts","MC-level kinematic cuts");
  	mcKineCuts->SetPtRange(ptmin,ptmax);
  	mcKineCuts->SetQAOn(qaList);

  	// Create and fill the list associated 
  	TObjArray* mcList = new TObjArray(0) ;
  	mcList->AddLast(mcKineCuts);
  	mcList->AddLast(mcGenCuts);

  	// kinematic cuts on muons rapidity 
  	AliCFTrackKineCuts *recKineCuts = new AliCFTrackKineCuts("recKineCuts","rec-level kine cuts");
  	recKineCuts->SetRapidityRange(ymin,ymax);
  	recKineCuts->SetQAOn(qaList);
  	TObjArray* recList = new TObjArray(0) ;
  	recList->AddLast(recKineCuts);

  	man->SetParticleCutsList(AliCFManager::kPartGenCuts,mcList);
  	man->SetParticleCutsList(AliCFManager::kPartAccCuts,recList);
	}
	else if(readMC && readAOD) {	// for MC in AOD
		task->SetRequirePdgCode(PDG);
		task->SetPtRange(ptmin,ptmax);
		task->SetRapidityRange(ymin,ymax);
	}

  task->SetCFManager(man); //here is set the CF manager
  task->SetQAList(qaList);

  if(readAOD) task->SetReadAODData();
	if(readMC) 	task->SetReadMCInfo();

	if(readMC && !readAOD) {
  	AliMCEventHandler*  mcHandler = new AliMCEventHandler();
  	mgr->SetMCtruthEventHandler(mcHandler);
	}

  if(readAOD) { 
		AliAODInputHandler *dataHandler = new AliAODInputHandler(); 
  	mgr->SetInputEventHandler(dataHandler);

		if(!readMC){
		// physics selection
		gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
		AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection();
		}
	}
  else { 
		AliESDInputHandler *dataHandler = new AliESDInputHandler(); 
  	mgr->SetInputEventHandler(dataHandler);

		if(!readMC) {
		// physics selection
		gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
		AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection();
		}
	}


  // Create and connect containers for input/output
  AliAnalysisDataContainer *cinput  = mgr->CreateContainer("cchain",TChain::Class(),AliAnalysisManager::kInputContainer);

  // output data
  Char_t file[256];
	sprintf(file,"container.%s.%s.%s.%s.root",taskname,runtype,readAOD ? "AOD":"ESD",readMC ? "MC":"Real");

  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("chist0", TH1D::Class(),AliAnalysisManager::kOutputContainer,file);
  AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("container", AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,file);

  mgr->AddTask(task);

  mgr->ConnectInput(task,0,mgr->GetCommonInputContainer());
  mgr->ConnectOutput(task,1,coutput1);
  mgr->ConnectOutput(task,2,coutput2);

  if (!mgr->InitAnalysis()) return;

  mgr->PrintStatus();
  if(usePlugin) mgr->StartAnalysis(runtype);
  else mgr->StartAnalysis(runtype,analysisChain);

  return kTRUE ;
}

AliAnalysisGrid* CreateAlienHandler(const char *taskname, const char *gridmode, const char* package[3])
{
  //if (!AliAnalysisGrid::CreateToken()) return NULL;
  AliAnalysisAlien *plugin = new AliAnalysisAlien();
	
	// AliEn plugin mode
  plugin->SetRunMode(gridmode);

	// SE copy test
	//plugin->SetCheckCopy(kFALSE);

	// JDL Merge
	plugin->SetMergeViaJDL(kTRUE);
	plugin->SetOneStageMerging(kFALSE);
	plugin->SetMaxMergeStages(3);

	// Set package
  plugin->SetAPIVersion(package[0]);
  plugin->SetROOTVersion(package[1]);
  plugin->SetAliROOTVersion(package[2]);
  plugin->SetDataPattern("ESDs/pass1/*AliESDs.root");


	// Set run numbers

	//______________________________________________________
	// LHC10f 
  plugin->SetGridDataDir("/alice/data/2010/LHC10f/");
	const Int_t nruns=24;

	Int_t run_number[nruns] = { 133006, 133010, 133327, 133330, 133414,	133419, 133563, 133800, 133924, 133969,
															133985, 134094, 134198, 134204, 134304,	134497, 134666, 134679, 134685, 134690,
															134841, 134905, 134914, 134919 };

  plugin->SetGridWorkingDir(Form("workdir-%s",taskname));

	//______________________________________________________
	// LHC10g
	/*
  plugin->SetGridDataDir("/alice/data/2010/LHC10g/");

	const Int_t nruns=12;

	Int_t run_number[nruns] = { 135658, 135704, 135709, 135712, 135748, 135761, 135795, 136177, 136180, 136189, 136372, 136376 };

  plugin->SetGridWorkingDir(Form("workdir-%s",taskname));
	*/

	// Set Prefix for real data
	plugin->SetRunPrefix("000");

	// Adding run numbers
  for(int i=0; i<nruns; i++) {
		plugin->AddRunNumber(run_number[i]);
	}

	// output and etc.
  plugin->SetGridOutputDir("output"); 
  plugin->SetAnalysisSource("AliCFMuonResUpsilon.cxx");
  plugin->SetAdditionalLibs("AliCFMuonResUpsilon.h AliCFMuonResUpsilon.cxx");
  //plugin->SetSplitMaxInputFileNumber(20);
  plugin->SetTTL(86400);
  plugin->SetInputFormat("xml-single");
  plugin->SetPrice(1);      
	plugin->SetUseSubmitPolicy();
  return plugin;
}
 AliCFMuonResUpsilon.C:1
 AliCFMuonResUpsilon.C:2
 AliCFMuonResUpsilon.C:3
 AliCFMuonResUpsilon.C:4
 AliCFMuonResUpsilon.C:5
 AliCFMuonResUpsilon.C:6
 AliCFMuonResUpsilon.C:7
 AliCFMuonResUpsilon.C:8
 AliCFMuonResUpsilon.C:9
 AliCFMuonResUpsilon.C:10
 AliCFMuonResUpsilon.C:11
 AliCFMuonResUpsilon.C:12
 AliCFMuonResUpsilon.C:13
 AliCFMuonResUpsilon.C:14
 AliCFMuonResUpsilon.C:15
 AliCFMuonResUpsilon.C:16
 AliCFMuonResUpsilon.C:17
 AliCFMuonResUpsilon.C:18
 AliCFMuonResUpsilon.C:19
 AliCFMuonResUpsilon.C:20
 AliCFMuonResUpsilon.C:21
 AliCFMuonResUpsilon.C:22
 AliCFMuonResUpsilon.C:23
 AliCFMuonResUpsilon.C:24
 AliCFMuonResUpsilon.C:25
 AliCFMuonResUpsilon.C:26
 AliCFMuonResUpsilon.C:27
 AliCFMuonResUpsilon.C:28
 AliCFMuonResUpsilon.C:29
 AliCFMuonResUpsilon.C:30
 AliCFMuonResUpsilon.C:31
 AliCFMuonResUpsilon.C:32
 AliCFMuonResUpsilon.C:33
 AliCFMuonResUpsilon.C:34
 AliCFMuonResUpsilon.C:35
 AliCFMuonResUpsilon.C:36
 AliCFMuonResUpsilon.C:37
 AliCFMuonResUpsilon.C:38
 AliCFMuonResUpsilon.C:39
 AliCFMuonResUpsilon.C:40
 AliCFMuonResUpsilon.C:41
 AliCFMuonResUpsilon.C:42
 AliCFMuonResUpsilon.C:43
 AliCFMuonResUpsilon.C:44
 AliCFMuonResUpsilon.C:45
 AliCFMuonResUpsilon.C:46
 AliCFMuonResUpsilon.C:47
 AliCFMuonResUpsilon.C:48
 AliCFMuonResUpsilon.C:49
 AliCFMuonResUpsilon.C:50
 AliCFMuonResUpsilon.C:51
 AliCFMuonResUpsilon.C:52
 AliCFMuonResUpsilon.C:53
 AliCFMuonResUpsilon.C:54
 AliCFMuonResUpsilon.C:55
 AliCFMuonResUpsilon.C:56
 AliCFMuonResUpsilon.C:57
 AliCFMuonResUpsilon.C:58
 AliCFMuonResUpsilon.C:59
 AliCFMuonResUpsilon.C:60
 AliCFMuonResUpsilon.C:61
 AliCFMuonResUpsilon.C:62
 AliCFMuonResUpsilon.C:63
 AliCFMuonResUpsilon.C:64
 AliCFMuonResUpsilon.C:65
 AliCFMuonResUpsilon.C:66
 AliCFMuonResUpsilon.C:67
 AliCFMuonResUpsilon.C:68
 AliCFMuonResUpsilon.C:69
 AliCFMuonResUpsilon.C:70
 AliCFMuonResUpsilon.C:71
 AliCFMuonResUpsilon.C:72
 AliCFMuonResUpsilon.C:73
 AliCFMuonResUpsilon.C:74
 AliCFMuonResUpsilon.C:75
 AliCFMuonResUpsilon.C:76
 AliCFMuonResUpsilon.C:77
 AliCFMuonResUpsilon.C:78
 AliCFMuonResUpsilon.C:79
 AliCFMuonResUpsilon.C:80
 AliCFMuonResUpsilon.C:81
 AliCFMuonResUpsilon.C:82
 AliCFMuonResUpsilon.C:83
 AliCFMuonResUpsilon.C:84
 AliCFMuonResUpsilon.C:85
 AliCFMuonResUpsilon.C:86
 AliCFMuonResUpsilon.C:87
 AliCFMuonResUpsilon.C:88
 AliCFMuonResUpsilon.C:89
 AliCFMuonResUpsilon.C:90
 AliCFMuonResUpsilon.C:91
 AliCFMuonResUpsilon.C:92
 AliCFMuonResUpsilon.C:93
 AliCFMuonResUpsilon.C:94
 AliCFMuonResUpsilon.C:95
 AliCFMuonResUpsilon.C:96
 AliCFMuonResUpsilon.C:97
 AliCFMuonResUpsilon.C:98
 AliCFMuonResUpsilon.C:99
 AliCFMuonResUpsilon.C:100
 AliCFMuonResUpsilon.C:101
 AliCFMuonResUpsilon.C:102
 AliCFMuonResUpsilon.C:103
 AliCFMuonResUpsilon.C:104
 AliCFMuonResUpsilon.C:105
 AliCFMuonResUpsilon.C:106
 AliCFMuonResUpsilon.C:107
 AliCFMuonResUpsilon.C:108
 AliCFMuonResUpsilon.C:109
 AliCFMuonResUpsilon.C:110
 AliCFMuonResUpsilon.C:111
 AliCFMuonResUpsilon.C:112
 AliCFMuonResUpsilon.C:113
 AliCFMuonResUpsilon.C:114
 AliCFMuonResUpsilon.C:115
 AliCFMuonResUpsilon.C:116
 AliCFMuonResUpsilon.C:117
 AliCFMuonResUpsilon.C:118
 AliCFMuonResUpsilon.C:119
 AliCFMuonResUpsilon.C:120
 AliCFMuonResUpsilon.C:121
 AliCFMuonResUpsilon.C:122
 AliCFMuonResUpsilon.C:123
 AliCFMuonResUpsilon.C:124
 AliCFMuonResUpsilon.C:125
 AliCFMuonResUpsilon.C:126
 AliCFMuonResUpsilon.C:127
 AliCFMuonResUpsilon.C:128
 AliCFMuonResUpsilon.C:129
 AliCFMuonResUpsilon.C:130
 AliCFMuonResUpsilon.C:131
 AliCFMuonResUpsilon.C:132
 AliCFMuonResUpsilon.C:133
 AliCFMuonResUpsilon.C:134
 AliCFMuonResUpsilon.C:135
 AliCFMuonResUpsilon.C:136
 AliCFMuonResUpsilon.C:137
 AliCFMuonResUpsilon.C:138
 AliCFMuonResUpsilon.C:139
 AliCFMuonResUpsilon.C:140
 AliCFMuonResUpsilon.C:141
 AliCFMuonResUpsilon.C:142
 AliCFMuonResUpsilon.C:143
 AliCFMuonResUpsilon.C:144
 AliCFMuonResUpsilon.C:145
 AliCFMuonResUpsilon.C:146
 AliCFMuonResUpsilon.C:147
 AliCFMuonResUpsilon.C:148
 AliCFMuonResUpsilon.C:149
 AliCFMuonResUpsilon.C:150
 AliCFMuonResUpsilon.C:151
 AliCFMuonResUpsilon.C:152
 AliCFMuonResUpsilon.C:153
 AliCFMuonResUpsilon.C:154
 AliCFMuonResUpsilon.C:155
 AliCFMuonResUpsilon.C:156
 AliCFMuonResUpsilon.C:157
 AliCFMuonResUpsilon.C:158
 AliCFMuonResUpsilon.C:159
 AliCFMuonResUpsilon.C:160
 AliCFMuonResUpsilon.C:161
 AliCFMuonResUpsilon.C:162
 AliCFMuonResUpsilon.C:163
 AliCFMuonResUpsilon.C:164
 AliCFMuonResUpsilon.C:165
 AliCFMuonResUpsilon.C:166
 AliCFMuonResUpsilon.C:167
 AliCFMuonResUpsilon.C:168
 AliCFMuonResUpsilon.C:169
 AliCFMuonResUpsilon.C:170
 AliCFMuonResUpsilon.C:171
 AliCFMuonResUpsilon.C:172
 AliCFMuonResUpsilon.C:173
 AliCFMuonResUpsilon.C:174
 AliCFMuonResUpsilon.C:175
 AliCFMuonResUpsilon.C:176
 AliCFMuonResUpsilon.C:177
 AliCFMuonResUpsilon.C:178
 AliCFMuonResUpsilon.C:179
 AliCFMuonResUpsilon.C:180
 AliCFMuonResUpsilon.C:181
 AliCFMuonResUpsilon.C:182
 AliCFMuonResUpsilon.C:183
 AliCFMuonResUpsilon.C:184
 AliCFMuonResUpsilon.C:185
 AliCFMuonResUpsilon.C:186
 AliCFMuonResUpsilon.C:187
 AliCFMuonResUpsilon.C:188
 AliCFMuonResUpsilon.C:189
 AliCFMuonResUpsilon.C:190
 AliCFMuonResUpsilon.C:191
 AliCFMuonResUpsilon.C:192
 AliCFMuonResUpsilon.C:193
 AliCFMuonResUpsilon.C:194
 AliCFMuonResUpsilon.C:195
 AliCFMuonResUpsilon.C:196
 AliCFMuonResUpsilon.C:197
 AliCFMuonResUpsilon.C:198
 AliCFMuonResUpsilon.C:199
 AliCFMuonResUpsilon.C:200
 AliCFMuonResUpsilon.C:201
 AliCFMuonResUpsilon.C:202
 AliCFMuonResUpsilon.C:203
 AliCFMuonResUpsilon.C:204
 AliCFMuonResUpsilon.C:205
 AliCFMuonResUpsilon.C:206
 AliCFMuonResUpsilon.C:207
 AliCFMuonResUpsilon.C:208
 AliCFMuonResUpsilon.C:209
 AliCFMuonResUpsilon.C:210
 AliCFMuonResUpsilon.C:211
 AliCFMuonResUpsilon.C:212
 AliCFMuonResUpsilon.C:213
 AliCFMuonResUpsilon.C:214
 AliCFMuonResUpsilon.C:215
 AliCFMuonResUpsilon.C:216
 AliCFMuonResUpsilon.C:217
 AliCFMuonResUpsilon.C:218
 AliCFMuonResUpsilon.C:219
 AliCFMuonResUpsilon.C:220
 AliCFMuonResUpsilon.C:221
 AliCFMuonResUpsilon.C:222
 AliCFMuonResUpsilon.C:223
 AliCFMuonResUpsilon.C:224
 AliCFMuonResUpsilon.C:225
 AliCFMuonResUpsilon.C:226
 AliCFMuonResUpsilon.C:227
 AliCFMuonResUpsilon.C:228
 AliCFMuonResUpsilon.C:229
 AliCFMuonResUpsilon.C:230
 AliCFMuonResUpsilon.C:231
 AliCFMuonResUpsilon.C:232
 AliCFMuonResUpsilon.C:233
 AliCFMuonResUpsilon.C:234
 AliCFMuonResUpsilon.C:235
 AliCFMuonResUpsilon.C:236
 AliCFMuonResUpsilon.C:237
 AliCFMuonResUpsilon.C:238
 AliCFMuonResUpsilon.C:239
 AliCFMuonResUpsilon.C:240
 AliCFMuonResUpsilon.C:241
 AliCFMuonResUpsilon.C:242
 AliCFMuonResUpsilon.C:243
 AliCFMuonResUpsilon.C:244
 AliCFMuonResUpsilon.C:245
 AliCFMuonResUpsilon.C:246
 AliCFMuonResUpsilon.C:247
 AliCFMuonResUpsilon.C:248
 AliCFMuonResUpsilon.C:249
 AliCFMuonResUpsilon.C:250
 AliCFMuonResUpsilon.C:251
 AliCFMuonResUpsilon.C:252
 AliCFMuonResUpsilon.C:253
 AliCFMuonResUpsilon.C:254
 AliCFMuonResUpsilon.C:255
 AliCFMuonResUpsilon.C:256
 AliCFMuonResUpsilon.C:257
 AliCFMuonResUpsilon.C:258
 AliCFMuonResUpsilon.C:259
 AliCFMuonResUpsilon.C:260
 AliCFMuonResUpsilon.C:261
 AliCFMuonResUpsilon.C:262
 AliCFMuonResUpsilon.C:263
 AliCFMuonResUpsilon.C:264
 AliCFMuonResUpsilon.C:265
 AliCFMuonResUpsilon.C:266
 AliCFMuonResUpsilon.C:267
 AliCFMuonResUpsilon.C:268
 AliCFMuonResUpsilon.C:269
 AliCFMuonResUpsilon.C:270
 AliCFMuonResUpsilon.C:271
 AliCFMuonResUpsilon.C:272
 AliCFMuonResUpsilon.C:273
 AliCFMuonResUpsilon.C:274
 AliCFMuonResUpsilon.C:275
 AliCFMuonResUpsilon.C:276
 AliCFMuonResUpsilon.C:277
 AliCFMuonResUpsilon.C:278
 AliCFMuonResUpsilon.C:279
 AliCFMuonResUpsilon.C:280
 AliCFMuonResUpsilon.C:281
 AliCFMuonResUpsilon.C:282
 AliCFMuonResUpsilon.C:283
 AliCFMuonResUpsilon.C:284
 AliCFMuonResUpsilon.C:285
 AliCFMuonResUpsilon.C:286
 AliCFMuonResUpsilon.C:287
 AliCFMuonResUpsilon.C:288
 AliCFMuonResUpsilon.C:289
 AliCFMuonResUpsilon.C:290
 AliCFMuonResUpsilon.C:291
 AliCFMuonResUpsilon.C:292
 AliCFMuonResUpsilon.C:293
 AliCFMuonResUpsilon.C:294
 AliCFMuonResUpsilon.C:295
 AliCFMuonResUpsilon.C:296
 AliCFMuonResUpsilon.C:297
 AliCFMuonResUpsilon.C:298
 AliCFMuonResUpsilon.C:299
 AliCFMuonResUpsilon.C:300
 AliCFMuonResUpsilon.C:301
 AliCFMuonResUpsilon.C:302
 AliCFMuonResUpsilon.C:303
 AliCFMuonResUpsilon.C:304
 AliCFMuonResUpsilon.C:305
 AliCFMuonResUpsilon.C:306
 AliCFMuonResUpsilon.C:307
 AliCFMuonResUpsilon.C:308
 AliCFMuonResUpsilon.C:309
 AliCFMuonResUpsilon.C:310
 AliCFMuonResUpsilon.C:311
 AliCFMuonResUpsilon.C:312
 AliCFMuonResUpsilon.C:313
 AliCFMuonResUpsilon.C:314
 AliCFMuonResUpsilon.C:315
 AliCFMuonResUpsilon.C:316
 AliCFMuonResUpsilon.C:317
 AliCFMuonResUpsilon.C:318
 AliCFMuonResUpsilon.C:319
 AliCFMuonResUpsilon.C:320
 AliCFMuonResUpsilon.C:321
 AliCFMuonResUpsilon.C:322
 AliCFMuonResUpsilon.C:323
 AliCFMuonResUpsilon.C:324
 AliCFMuonResUpsilon.C:325
 AliCFMuonResUpsilon.C:326
 AliCFMuonResUpsilon.C:327
 AliCFMuonResUpsilon.C:328
 AliCFMuonResUpsilon.C:329
 AliCFMuonResUpsilon.C:330
 AliCFMuonResUpsilon.C:331
 AliCFMuonResUpsilon.C:332
 AliCFMuonResUpsilon.C:333
 AliCFMuonResUpsilon.C:334
 AliCFMuonResUpsilon.C:335
 AliCFMuonResUpsilon.C:336
 AliCFMuonResUpsilon.C:337
 AliCFMuonResUpsilon.C:338
 AliCFMuonResUpsilon.C:339
 AliCFMuonResUpsilon.C:340
 AliCFMuonResUpsilon.C:341
 AliCFMuonResUpsilon.C:342
 AliCFMuonResUpsilon.C:343
 AliCFMuonResUpsilon.C:344
 AliCFMuonResUpsilon.C:345
 AliCFMuonResUpsilon.C:346
 AliCFMuonResUpsilon.C:347
 AliCFMuonResUpsilon.C:348
 AliCFMuonResUpsilon.C:349
 AliCFMuonResUpsilon.C:350
 AliCFMuonResUpsilon.C:351
 AliCFMuonResUpsilon.C:352
 AliCFMuonResUpsilon.C:353
 AliCFMuonResUpsilon.C:354
 AliCFMuonResUpsilon.C:355
 AliCFMuonResUpsilon.C:356
 AliCFMuonResUpsilon.C:357
 AliCFMuonResUpsilon.C:358
 AliCFMuonResUpsilon.C:359
 AliCFMuonResUpsilon.C:360
 AliCFMuonResUpsilon.C:361
 AliCFMuonResUpsilon.C:362
 AliCFMuonResUpsilon.C:363
 AliCFMuonResUpsilon.C:364
 AliCFMuonResUpsilon.C:365
 AliCFMuonResUpsilon.C:366
 AliCFMuonResUpsilon.C:367
 AliCFMuonResUpsilon.C:368
 AliCFMuonResUpsilon.C:369
 AliCFMuonResUpsilon.C:370
 AliCFMuonResUpsilon.C:371
 AliCFMuonResUpsilon.C:372
 AliCFMuonResUpsilon.C:373
 AliCFMuonResUpsilon.C:374
 AliCFMuonResUpsilon.C:375
 AliCFMuonResUpsilon.C:376
 AliCFMuonResUpsilon.C:377
 AliCFMuonResUpsilon.C:378
 AliCFMuonResUpsilon.C:379
 AliCFMuonResUpsilon.C:380
 AliCFMuonResUpsilon.C:381
 AliCFMuonResUpsilon.C:382
 AliCFMuonResUpsilon.C:383
 AliCFMuonResUpsilon.C:384
 AliCFMuonResUpsilon.C:385
 AliCFMuonResUpsilon.C:386
 AliCFMuonResUpsilon.C:387
 AliCFMuonResUpsilon.C:388
 AliCFMuonResUpsilon.C:389
 AliCFMuonResUpsilon.C:390
 AliCFMuonResUpsilon.C:391
 AliCFMuonResUpsilon.C:392
 AliCFMuonResUpsilon.C:393
 AliCFMuonResUpsilon.C:394
 AliCFMuonResUpsilon.C:395
 AliCFMuonResUpsilon.C:396
 AliCFMuonResUpsilon.C:397