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.                  *
 **************************************************************************/

// TPC+TOF config
// author: Eulogio Serradilla <eulogio.serradilla@cern.ch>

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

#include "Config.h"

Int_t Config_TPCTOF_LHC10x(  const TString& inputDir   = "~/alice/input"
                           , const TString& outputDir  = "~/alice/output"
                           , const TString& period     = "lhc10d"
                           , const TString& outputTag  = "lhc10d"
                           , const TString& trkselTag  = "-bayes-nsd"
                           , const TString& multTag    = ""
                           , const TString& multCorTag = ""
                           , Double_t ymax             = 0.5
                           , Bool_t inel               = 0
                           , Bool_t drawOutput         = 1
                           , const TString& species    = "Proton"
                           , Double_t ptmin            = 0.4
                           , Double_t ptjoint          = 1.0
                           , Double_t ptmax            = 3.2
                           , Double_t ptpid            = 4)
{
//
// combine TPC and TOF for protons and deuterons
//
	using namespace std;
	
	if((species != "Proton") && (species != "Deuteron"))
	{
		cerr << "Particle species " << species << " not implemented, only 'Proton' and 'Deuteron'." << endl;
		exit(1);
	}
	
	const TString kOutputTagTPC = outputTag + "-tpc";
	const TString kOutputTagTOF = outputTag + "-tof";
	
	const TString kArgTPC =        inputDir        + "\","
		              + "\"" + outputDir       + "\","
		              + "\"" + period          + "\","
		              + "\"" + kOutputTagTPC   + "\","
		              + "\"" + trkselTag       + "\","
		              + "\"" + multTag         + "\","
		              + "\"" + multCorTag;
		
	const TString kArgTOF =        inputDir        + "\","
		              + "\"" + outputDir       + "\","
		              + "\"" + period          + "\","
		              + "\"" + kOutputTagTOF   + "\","
		              + "\"" + trkselTag       + "\","
		              + "\"" + multTag         + "\","
		              + "\"" + multCorTag;
	
	cout << "Config_" << species << "_TPC_LHC10x.C" << endl << endl;
	gROOT->ProcessLine(Form(".x Config_%s_TPC_LHC10x.C+g(\"%s\", %f, %d, 0, %f, %f, 0,1,1,0,0)"
				, species.Data()
				, kArgTPC.Data()
				, ymax
				, inel
				, ptmin
				, ptjoint));
		
		
	cout << "Config_" << species << "_TOF_LHC10x.C" << endl << endl;
	gROOT->ProcessLine(Form(".x Config_%s_TOF_LHC10x.C+g(\"%s\", %f, %d, 0, %f, %f, %f, 1,1,1,0,0)"
				, species.Data()
				, kArgTOF.Data()
				, ymax
				, inel
				, ptjoint
				, ptmax
				, ptpid));
		
	TString outputPtTPC = outputDir + "/" + MakeOutputName(species, kOutputTagTPC) + "-Pt.root";
	TString outputPtTOF = outputDir + "/" + MakeOutputName(species, kOutputTagTOF) + "-Pt.root";
	
	TString outputPtTPCdbg = outputDir + "/" + MakeOutputName(species, kOutputTagTPC) + "-Pt-debug.root";
	TString outputPtTOFdbg = outputDir + "/" + MakeOutputName(species, kOutputTagTOF) + "-Pt-debug.root";
	
	// combine TPC and TOF pt
	
	TString outputPt      = outputDir + "/" + MakeOutputName(species, outputTag) + "-Pt.root";
	TString outputRatio   = outputDir + "/" + MakeOutputName(species, outputTag) + "-Ratio.root";
	TString outputSpectra = outputDir + "/" + MakeOutputName(species, outputTag) + "-Spectra.root";
	
	TFileMerger m;
	
	m.AddFile(outputPtTPC.Data(),0);
	m.AddFile(outputPtTOF.Data(),0);
	
	m.OutputFile(outputPt.Data());
	
	m.Merge();
	
	// remove tmp files
	gSystem->Exec(Form("rm -f %s %s %s %s", outputPtTPC.Data(), outputPtTOF.Data(), outputPtTPCdbg.Data(), outputPtTOFdbg.Data()));
	
	// make ratio and spectra
	
	AliLnDriver driver;
	
	driver.SetSpecies(species);
	
	driver.SetRapidityInterval(-ymax,ymax);
	
	driver.SetExtrapolateToINEL(inel);
	
	driver.SetOutputFilenames(outputPt, outputRatio, outputSpectra);
	
	driver.SetOutputTag(outputTag);
	
	driver.SetMakeCorrections(0);
	driver.SetMakePt(0);
	driver.SetMakeRatio(1);
	driver.SetMakeSpectra(1);
	
	driver.Run();
	
	if(!drawOutput) return 0;
	
	DrawOutputRatio(outputRatio, outputTag, species);
	DrawOutputSpectra(outputSpectra, outputTag, species);
	
	return 0;
}
 Config_TPCTOF_LHC10x.C:1
 Config_TPCTOF_LHC10x.C:2
 Config_TPCTOF_LHC10x.C:3
 Config_TPCTOF_LHC10x.C:4
 Config_TPCTOF_LHC10x.C:5
 Config_TPCTOF_LHC10x.C:6
 Config_TPCTOF_LHC10x.C:7
 Config_TPCTOF_LHC10x.C:8
 Config_TPCTOF_LHC10x.C:9
 Config_TPCTOF_LHC10x.C:10
 Config_TPCTOF_LHC10x.C:11
 Config_TPCTOF_LHC10x.C:12
 Config_TPCTOF_LHC10x.C:13
 Config_TPCTOF_LHC10x.C:14
 Config_TPCTOF_LHC10x.C:15
 Config_TPCTOF_LHC10x.C:16
 Config_TPCTOF_LHC10x.C:17
 Config_TPCTOF_LHC10x.C:18
 Config_TPCTOF_LHC10x.C:19
 Config_TPCTOF_LHC10x.C:20
 Config_TPCTOF_LHC10x.C:21
 Config_TPCTOF_LHC10x.C:22
 Config_TPCTOF_LHC10x.C:23
 Config_TPCTOF_LHC10x.C:24
 Config_TPCTOF_LHC10x.C:25
 Config_TPCTOF_LHC10x.C:26
 Config_TPCTOF_LHC10x.C:27
 Config_TPCTOF_LHC10x.C:28
 Config_TPCTOF_LHC10x.C:29
 Config_TPCTOF_LHC10x.C:30
 Config_TPCTOF_LHC10x.C:31
 Config_TPCTOF_LHC10x.C:32
 Config_TPCTOF_LHC10x.C:33
 Config_TPCTOF_LHC10x.C:34
 Config_TPCTOF_LHC10x.C:35
 Config_TPCTOF_LHC10x.C:36
 Config_TPCTOF_LHC10x.C:37
 Config_TPCTOF_LHC10x.C:38
 Config_TPCTOF_LHC10x.C:39
 Config_TPCTOF_LHC10x.C:40
 Config_TPCTOF_LHC10x.C:41
 Config_TPCTOF_LHC10x.C:42
 Config_TPCTOF_LHC10x.C:43
 Config_TPCTOF_LHC10x.C:44
 Config_TPCTOF_LHC10x.C:45
 Config_TPCTOF_LHC10x.C:46
 Config_TPCTOF_LHC10x.C:47
 Config_TPCTOF_LHC10x.C:48
 Config_TPCTOF_LHC10x.C:49
 Config_TPCTOF_LHC10x.C:50
 Config_TPCTOF_LHC10x.C:51
 Config_TPCTOF_LHC10x.C:52
 Config_TPCTOF_LHC10x.C:53
 Config_TPCTOF_LHC10x.C:54
 Config_TPCTOF_LHC10x.C:55
 Config_TPCTOF_LHC10x.C:56
 Config_TPCTOF_LHC10x.C:57
 Config_TPCTOF_LHC10x.C:58
 Config_TPCTOF_LHC10x.C:59
 Config_TPCTOF_LHC10x.C:60
 Config_TPCTOF_LHC10x.C:61
 Config_TPCTOF_LHC10x.C:62
 Config_TPCTOF_LHC10x.C:63
 Config_TPCTOF_LHC10x.C:64
 Config_TPCTOF_LHC10x.C:65
 Config_TPCTOF_LHC10x.C:66
 Config_TPCTOF_LHC10x.C:67
 Config_TPCTOF_LHC10x.C:68
 Config_TPCTOF_LHC10x.C:69
 Config_TPCTOF_LHC10x.C:70
 Config_TPCTOF_LHC10x.C:71
 Config_TPCTOF_LHC10x.C:72
 Config_TPCTOF_LHC10x.C:73
 Config_TPCTOF_LHC10x.C:74
 Config_TPCTOF_LHC10x.C:75
 Config_TPCTOF_LHC10x.C:76
 Config_TPCTOF_LHC10x.C:77
 Config_TPCTOF_LHC10x.C:78
 Config_TPCTOF_LHC10x.C:79
 Config_TPCTOF_LHC10x.C:80
 Config_TPCTOF_LHC10x.C:81
 Config_TPCTOF_LHC10x.C:82
 Config_TPCTOF_LHC10x.C:83
 Config_TPCTOF_LHC10x.C:84
 Config_TPCTOF_LHC10x.C:85
 Config_TPCTOF_LHC10x.C:86
 Config_TPCTOF_LHC10x.C:87
 Config_TPCTOF_LHC10x.C:88
 Config_TPCTOF_LHC10x.C:89
 Config_TPCTOF_LHC10x.C:90
 Config_TPCTOF_LHC10x.C:91
 Config_TPCTOF_LHC10x.C:92
 Config_TPCTOF_LHC10x.C:93
 Config_TPCTOF_LHC10x.C:94
 Config_TPCTOF_LHC10x.C:95
 Config_TPCTOF_LHC10x.C:96
 Config_TPCTOF_LHC10x.C:97
 Config_TPCTOF_LHC10x.C:98
 Config_TPCTOF_LHC10x.C:99
 Config_TPCTOF_LHC10x.C:100
 Config_TPCTOF_LHC10x.C:101
 Config_TPCTOF_LHC10x.C:102
 Config_TPCTOF_LHC10x.C:103
 Config_TPCTOF_LHC10x.C:104
 Config_TPCTOF_LHC10x.C:105
 Config_TPCTOF_LHC10x.C:106
 Config_TPCTOF_LHC10x.C:107
 Config_TPCTOF_LHC10x.C:108
 Config_TPCTOF_LHC10x.C:109
 Config_TPCTOF_LHC10x.C:110
 Config_TPCTOF_LHC10x.C:111
 Config_TPCTOF_LHC10x.C:112
 Config_TPCTOF_LHC10x.C:113
 Config_TPCTOF_LHC10x.C:114
 Config_TPCTOF_LHC10x.C:115
 Config_TPCTOF_LHC10x.C:116
 Config_TPCTOF_LHC10x.C:117
 Config_TPCTOF_LHC10x.C:118
 Config_TPCTOF_LHC10x.C:119
 Config_TPCTOF_LHC10x.C:120
 Config_TPCTOF_LHC10x.C:121
 Config_TPCTOF_LHC10x.C:122
 Config_TPCTOF_LHC10x.C:123
 Config_TPCTOF_LHC10x.C:124
 Config_TPCTOF_LHC10x.C:125
 Config_TPCTOF_LHC10x.C:126
 Config_TPCTOF_LHC10x.C:127
 Config_TPCTOF_LHC10x.C:128
 Config_TPCTOF_LHC10x.C:129
 Config_TPCTOF_LHC10x.C:130
 Config_TPCTOF_LHC10x.C:131
 Config_TPCTOF_LHC10x.C:132
 Config_TPCTOF_LHC10x.C:133
 Config_TPCTOF_LHC10x.C:134
 Config_TPCTOF_LHC10x.C:135
 Config_TPCTOF_LHC10x.C:136
 Config_TPCTOF_LHC10x.C:137
 Config_TPCTOF_LHC10x.C:138
 Config_TPCTOF_LHC10x.C:139
 Config_TPCTOF_LHC10x.C:140
 Config_TPCTOF_LHC10x.C:141
 Config_TPCTOF_LHC10x.C:142
 Config_TPCTOF_LHC10x.C:143
 Config_TPCTOF_LHC10x.C:144
 Config_TPCTOF_LHC10x.C:145
 Config_TPCTOF_LHC10x.C:146
 Config_TPCTOF_LHC10x.C:147