1 /**************************************************************************
\r
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
\r
4 * Author: The ALICE Off-line Project. *
\r
5 * Contributors are mentioned in the code where appropriate. *
\r
7 * Permission to use, copy, modify and distribute this software and its *
\r
8 * documentation strictly for non-commercial purposes is hereby granted *
\r
9 * without fee, provided that the above copyright notice appears in all *
\r
10 * copies and that both the copyright notice and this permission notice *
\r
11 * appear in the supporting documentation. The authors make no claims *
\r
12 * about the suitability of this software for any purpose. It is *
\r
13 * provided "as is" without express or implied warranty. *
\r
14 **************************************************************************/
\r
16 // call Config_XXX for each period
\r
17 // author: Eulogio Serradilla <eulogio.serradilla@cern.ch>
\r
19 #if !defined(__CINT__) || defined(__MAKECINT__)
\r
20 #include <Riostream.h>
\r
22 #include <TSystem.h>
\r
23 #include <TString.h>
\r
24 #include <TFileMerger.h>
\r
25 #include "AliLnDriver.h"
\r
30 Int_t LHC10bcde( const TString& species = "Deuteron"
\r
31 , const TString& inputDir = "~/alice/input"
\r
32 , const TString& outputDir = "~/alice/output"
\r
33 , const TString& outputTag = "lhc10bcde"
\r
34 , const TString& trkselTag = "-tpc3-nsd-moc"
\r
35 , const TString& multTag = ""
\r
36 , const TString& multCorTag = ""
\r
37 , Double_t ymax = 0.5
\r
38 , Bool_t inel = 0 // for mult
\r
39 , Bool_t drawOutput = 1 // for batch
\r
43 // call Config_XXX for each period, merge the corrected pt and then get the results
\r
45 const Int_t kNper = 4;
\r
46 const TString kPeriod[kNper] = { "lhc10b", "lhc10c", "lhc10d", "lhc10e" };
\r
47 const TString kOutputTag[kNper] = { "lhc10b", "lhc10c", "lhc10d", "lhc10e" };
\r
49 Double_t ptmin = (species=="Proton") ? 0.4 : 0.7;
\r
50 Double_t ptjoint = (species=="Proton") ? 1.0 : 1.0;
\r
51 Double_t ptmax = (species=="Proton") ? 2.0 : 3.0;
\r
52 Double_t ptpid = (species=="Proton") ? 3.5 : 1.6;
\r
54 using namespace std;
\r
56 if( (option<0) || (option>2) || ((species != "Proton") && (species != "Deuteron")))
\r
58 cerr << "unknown species/option: " << species << "/" << option << endl;
\r
59 cerr << "species: Proton or Deuteron, options: 0 (TPC), 1 (TOF), 2 (TPCTOF)" << endl;
\r
65 for(Int_t i=0; i<kNper; ++i)
\r
67 cout << endl << "Period: " << kPeriod[i] << endl;
\r
69 TString arg = inputDir + "\","
\r
70 + "\"" + outputDir + "\","
\r
71 + "\"" + kPeriod[i] + "\","
\r
72 + "\"" + kOutputTag[i] + "\","
\r
73 + "\"" + trkselTag + "\","
\r
74 + "\"" + multTag + "\","
\r
75 + "\"" + multCorTag;
\r
80 cout << "Config_" << species << "_TPC_LHC10x.C" << endl << endl;
\r
81 gROOT->ProcessLine(Form(".x Config_%s_TPC_LHC10x.C+g(\"%s\", %f, %d, 0)", species.Data(), arg.Data(), ymax, inel));
\r
84 cout << "Config_" << species << "_LHC10x.C" << endl << endl;
\r
85 gROOT->ProcessLine(Form(".x Config_%s_TOF_LHC10x.C+g(\"%s\", %f, %d, 0)", species.Data(), arg.Data(), ymax, inel));
\r
88 cout << "Config_TPCTOF_LHC10x.C" << endl << endl;
\r
89 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));
\r
93 TString ptfile = outputDir + "/" + species + "-" + kOutputTag[i] + "-Pt.root";
\r
94 m.AddFile(ptfile,0);
\r
97 TString outputPt = outputDir + "/" + species + "-" + outputTag + multTag + "-Pt.root";
\r
98 TString outputRatio = outputDir + "/" + species + "-" + outputTag + multTag + "-Ratio.root";
\r
99 TString outputSpectra = outputDir + "/" + species + "-" + outputTag + multTag + "-Spectra.root";
\r
103 m.OutputFile(outputPt.Data());
\r
108 AliLnDriver driver;
\r
110 driver.SetSpecies(species);
\r
112 driver.SetOutputFilenames(outputPt, outputRatio, outputSpectra);
\r
113 driver.SetOutputTag(outputTag);
\r
115 driver.SetRapidityInterval(-ymax,ymax);
\r
116 driver.SetExtrapolateToINEL(inel);
\r
118 driver.SetMakeCorrections(0);
\r
119 driver.SetMakePt(0);
\r
120 driver.SetMakeRatio(1);
\r
121 driver.SetMakeSpectra(1);
\r
125 // merge all results for comparison
\r
127 TFileMerger m2, m3;
\r
129 for(Int_t i=0; i<kNper; ++i)
\r
131 m2.AddFile((outputDir + "/" + species + "-" + kPeriod[i] + "-Ratio.root").Data(),0);
\r
132 m3.AddFile((outputDir + "/" + species + "-" + kPeriod[i] + "-Spectra.root").Data(),0);
\r
135 m2.AddFile(outputRatio.Data(),0);
\r
136 m3.AddFile(outputSpectra.Data(),0);
\r
138 TString allRatios = outputDir + "/" + species + "-" + outputTag + "-2" + multTag + "-Ratio.root";
\r
139 TString allSpectra = outputDir + "/" + species + "-" + outputTag + "-2" + multTag + "-Spectra.root";
\r
141 m2.OutputFile(allRatios.Data());
\r
142 m3.OutputFile(allSpectra.Data());
\r
149 if(!drawOutput) return 0;
\r
151 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()));
\r
153 Double_t minYield = (species=="Proton") ? 1.1e-6 : 2.e-8;
\r
154 Double_t maxYield = (species=="Proton") ? 4.e-1 : 9.e-4;
\r
156 DrawOutputSpectraMult(allSpectra, species, minYield, maxYield, 2, outputTag);
\r