ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

// call Config_XXX for each period
// author: Eulogio Serradilla <eulogio.serradilla@cern.ch>

#if !defined(__CINT__) || defined(__MAKECINT__)
#include <Riostream.h>
#include <TROOT.h>
#include <TSystem.h>
#include <TString.h>
#include <TFileMerger.h>
#include "AliLnDriver.h"
#endif

#include "Config.h"

Int_t LHC10bcde(  const TString& species    = "Deuteron"
                , const TString& inputDir   = "~/alice/input"
                , const TString& outputDir  = "~/alice/output"
                , const TString& outputTag  = "lhc10bcde"
                , const TString& trkselTag  = "-tpc3-nsd-moc"
                , const TString& multTag    = ""
                , const TString& multCorTag = ""
                , Double_t ymax             = 0.5
                , Bool_t inel               = 0  // for mult
                , Bool_t drawOutput         = 1  // for batch
                , Double_t ptmin            = 0.8
                , Double_t ptmax            = 3.2
                , Double_t ptjoint          = 1.0
                , Double_t ptpid            = 1.4
                , Int_t option              = 2)
{
//
// call Config_XXX for each period, merge the corrected pt and then get the results
//
	const Int_t kNper = 4;
	const TString kPeriod[kNper]    = { "lhc10b", "lhc10c", "lhc10d", "lhc10e" };
	const TString kOutputTag[kNper] = { "lhc10b", "lhc10c", "lhc10d", "lhc10e" };
	
	using namespace std;
	
	if( (option<0) || (option>2))
	{
		cerr << "unknown option: " << option << endl;
		cerr << "valid options : 0 (TPC), 1 (TOF), 2 (TPCTOF)" << endl;
		exit(1);
	}
	
	TFileMerger m;
	
	for(Int_t i=0; i<kNper; ++i)
	{
		cout << endl << "Period: " << kPeriod[i] << endl;
		
		TString arg =           inputDir       + "\","
			      + "\""  + outputDir      + "\","
			      + "\""  + kPeriod[i]     + "\","
			      + "\""  + kOutputTag[i]  + "\","
		              + "\""  + trkselTag      + "\","
			      + "\""  + multTag        + "\","
			      + "\""  + multCorTag;
			
		switch(option)
		{
			case 0:
				cout << "Config_" << species << "_TPC_LHC10x.C" << endl << endl;
				gROOT->ProcessLine(Form(".x Config_%s_TPC_LHC10x.C+g(\"%s\", %f, %d, 0, %f, %f,1,1,1,1,1)", species.Data(), arg.Data(), ymax, inel, ptmin, ptmax));
				break;
			case 1:
				cout << "Config_" << species << "_LHC10x.C" << endl << endl;
				gROOT->ProcessLine(Form(".x Config_%s_TOF_LHC10x.C+g(\"%s\", %f, %d, 0, %f, %f, %f,1,1,1,1,1)", species.Data(), arg.Data(), ymax, inel, ptmin, ptmax, ptpid));
				break;
			case 2:
				cout << "Config_TPCTOF_LHC10x.C" << endl << endl;
				gROOT->ProcessLine(Form(".x Config_TPCTOF_LHC10x.C+g(\"%s\", %f, %d, 0, \"%s\", %f, %f, %f, %f)", arg.Data(), ymax, inel, species.Data(), ptmin, ptjoint, ptmax, ptpid));
				break;
		}
		
		TString ptfile = outputDir + "/" + species + "-" + kOutputTag[i] + "-Pt.root";
		m.AddFile(ptfile,0);
	}
	
	TString outputPt      = outputDir + "/" + species + "-" + outputTag + multTag + "-Pt.root";
	TString outputRatio   = outputDir + "/" + species + "-" + outputTag + multTag + "-Ratio.root";
	TString outputSpectra = outputDir + "/" + species + "-" + outputTag + multTag + "-Spectra.root";
	
	// pt
	
	m.OutputFile(outputPt.Data());
	m.Merge();
	
	// spectra
	
	AliLnDriver driver;
	
	driver.SetSpecies(species);
	
	driver.SetOutputFilenames(outputPt, outputRatio, outputSpectra);
	driver.SetOutputTag(outputTag);
	
	driver.SetRapidityInterval(-ymax,ymax);
	driver.SetExtrapolateToINEL(inel);
	
	driver.SetMakeCorrections(0);
	driver.SetMakePt(0);
	driver.SetMakeRatio(1);
	driver.SetMakeSpectra(1);
	
	driver.Run();
	
	// merge all results for comparison
	
	TFileMerger m2, m3;
	
	for(Int_t i=0; i<kNper; ++i)
	{
		m2.AddFile((outputDir + "/" + species + "-" + kPeriod[i] + "-Ratio.root").Data(),0);
		m3.AddFile((outputDir + "/" + species + "-" + kPeriod[i] + "-Spectra.root").Data(),0);
	}
	
	m2.AddFile(outputRatio.Data(),0);
	m3.AddFile(outputSpectra.Data(),0);
	
	TString allRatios = outputDir + "/" + species + "-" + outputTag + "-2" + multTag + "-Ratio.root";
	TString allSpectra = outputDir + "/" + species + "-" + outputTag + "-2" + multTag + "-Spectra.root";
	
	m2.OutputFile(allRatios.Data());
	m3.OutputFile(allSpectra.Data());
	
	m2.Merge();
	m3.Merge();
	
	// compare periods
	
	if(!drawOutput) return 0;
	
	gROOT->ProcessLine(Form(".x DrawDir.C+g(\"%s\",\"Anti%s%s_Ratio_Pt\",\"%s\",0,4.5, 0., 1.8, \"p_{T} (GeV/c)\", \"neg/pos\", 2, \"cRatio\",\"Particle ratio\")", allRatios.Data(), species.Data(), species.Data(),outputTag.Data()));
	
	Double_t minYield  = (species=="Proton") ? 1.1e-6 : 2.e-8;
	Double_t maxYield  = (species=="Proton") ? 4.e-1  : 9.e-4;
	
	DrawOutputSpectraMult(allSpectra, species, minYield, maxYield, 2, outputTag);
	
	return 0;
}
 LHC10bcde.C:1
 LHC10bcde.C:2
 LHC10bcde.C:3
 LHC10bcde.C:4
 LHC10bcde.C:5
 LHC10bcde.C:6
 LHC10bcde.C:7
 LHC10bcde.C:8
 LHC10bcde.C:9
 LHC10bcde.C:10
 LHC10bcde.C:11
 LHC10bcde.C:12
 LHC10bcde.C:13
 LHC10bcde.C:14
 LHC10bcde.C:15
 LHC10bcde.C:16
 LHC10bcde.C:17
 LHC10bcde.C:18
 LHC10bcde.C:19
 LHC10bcde.C:20
 LHC10bcde.C:21
 LHC10bcde.C:22
 LHC10bcde.C:23
 LHC10bcde.C:24
 LHC10bcde.C:25
 LHC10bcde.C:26
 LHC10bcde.C:27
 LHC10bcde.C:28
 LHC10bcde.C:29
 LHC10bcde.C:30
 LHC10bcde.C:31
 LHC10bcde.C:32
 LHC10bcde.C:33
 LHC10bcde.C:34
 LHC10bcde.C:35
 LHC10bcde.C:36
 LHC10bcde.C:37
 LHC10bcde.C:38
 LHC10bcde.C:39
 LHC10bcde.C:40
 LHC10bcde.C:41
 LHC10bcde.C:42
 LHC10bcde.C:43
 LHC10bcde.C:44
 LHC10bcde.C:45
 LHC10bcde.C:46
 LHC10bcde.C:47
 LHC10bcde.C:48
 LHC10bcde.C:49
 LHC10bcde.C:50
 LHC10bcde.C:51
 LHC10bcde.C:52
 LHC10bcde.C:53
 LHC10bcde.C:54
 LHC10bcde.C:55
 LHC10bcde.C:56
 LHC10bcde.C:57
 LHC10bcde.C:58
 LHC10bcde.C:59
 LHC10bcde.C:60
 LHC10bcde.C:61
 LHC10bcde.C:62
 LHC10bcde.C:63
 LHC10bcde.C:64
 LHC10bcde.C:65
 LHC10bcde.C:66
 LHC10bcde.C:67
 LHC10bcde.C:68
 LHC10bcde.C:69
 LHC10bcde.C:70
 LHC10bcde.C:71
 LHC10bcde.C:72
 LHC10bcde.C:73
 LHC10bcde.C:74
 LHC10bcde.C:75
 LHC10bcde.C:76
 LHC10bcde.C:77
 LHC10bcde.C:78
 LHC10bcde.C:79
 LHC10bcde.C:80
 LHC10bcde.C:81
 LHC10bcde.C:82
 LHC10bcde.C:83
 LHC10bcde.C:84
 LHC10bcde.C:85
 LHC10bcde.C:86
 LHC10bcde.C:87
 LHC10bcde.C:88
 LHC10bcde.C:89
 LHC10bcde.C:90
 LHC10bcde.C:91
 LHC10bcde.C:92
 LHC10bcde.C:93
 LHC10bcde.C:94
 LHC10bcde.C:95
 LHC10bcde.C:96
 LHC10bcde.C:97
 LHC10bcde.C:98
 LHC10bcde.C:99
 LHC10bcde.C:100
 LHC10bcde.C:101
 LHC10bcde.C:102
 LHC10bcde.C:103
 LHC10bcde.C:104
 LHC10bcde.C:105
 LHC10bcde.C:106
 LHC10bcde.C:107
 LHC10bcde.C:108
 LHC10bcde.C:109
 LHC10bcde.C:110
 LHC10bcde.C:111
 LHC10bcde.C:112
 LHC10bcde.C:113
 LHC10bcde.C:114
 LHC10bcde.C:115
 LHC10bcde.C:116
 LHC10bcde.C:117
 LHC10bcde.C:118
 LHC10bcde.C:119
 LHC10bcde.C:120
 LHC10bcde.C:121
 LHC10bcde.C:122
 LHC10bcde.C:123
 LHC10bcde.C:124
 LHC10bcde.C:125
 LHC10bcde.C:126
 LHC10bcde.C:127
 LHC10bcde.C:128
 LHC10bcde.C:129
 LHC10bcde.C:130
 LHC10bcde.C:131
 LHC10bcde.C:132
 LHC10bcde.C:133
 LHC10bcde.C:134
 LHC10bcde.C:135
 LHC10bcde.C:136
 LHC10bcde.C:137
 LHC10bcde.C:138
 LHC10bcde.C:139
 LHC10bcde.C:140
 LHC10bcde.C:141
 LHC10bcde.C:142
 LHC10bcde.C:143
 LHC10bcde.C:144
 LHC10bcde.C:145
 LHC10bcde.C:146
 LHC10bcde.C:147
 LHC10bcde.C:148
 LHC10bcde.C:149
 LHC10bcde.C:150
 LHC10bcde.C:151
 LHC10bcde.C:152
 LHC10bcde.C:153
 LHC10bcde.C:154
 LHC10bcde.C:155
 LHC10bcde.C:156
 LHC10bcde.C:157
 LHC10bcde.C:158
 LHC10bcde.C:159