]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/FORWARD/analysis2/trains/MakeMultDistsTrain.C
ccae39132cd0e8fa2fe8cc77d27e0510b710b439
[u/mrichter/AliRoot.git] / PWGLF / FORWARD / analysis2 / trains / MakeMultDistsTrain.C
1 /**
2  * @file   MakeMultDistsTrain.C
3  * @author Christian Holm Christensen <cholm@master.hehi.nbi.dk>
4  * @date   Fri Jun  1 13:51:26 2012
5  * 
6  * @brief  
7  * 
8  * @ingroup pwglf_forward_trains_specific
9  * 
10  */
11
12 #include "TrainSetup.C"
13
14 //====================================================================
15 /**
16  * Analysis train to make @f$ dN/d\eta@f$
17  * 
18  *
19  * @ingroup pwglf_forward_dndeta
20  * @ingroup pwglf_forward_trains_specific
21  */
22 class MakeMultDistsTrain : public TrainSetup
23 {
24 public:
25   /** 
26    * Constructor.  
27    * 
28    * @param name     Name of train (free form)
29    */
30   MakeMultDistsTrain(const char* name)
31   : TrainSetup(name)
32   {
33     fOptions.Add("trig",       "TYPE", "Trigger type", "V0AND");
34     fOptions.Add("vzMin",      "CENTIMETER", "Min Ip Z", -4);
35     fOptions.Add("vzMax",      "CENTIMETER", "Max Ip Z", +4);
36     fOptions.Add("phi-acc",    "Use stored phi acceptance", true);
37     fOptions.Add("asymmetric", "Make asymmetric (+/-) bins", false);
38   }
39 protected:
40   /** 
41    * Create the tasks 
42    * 
43    */
44   void CreateTasks(AliAnalysisManager*)
45   {
46     // --- Output file name ------------------------------------------
47     AliAnalysisManager::SetCommonFileName("forward_multdists.root");
48
49     // --- Load libraries/pars ---------------------------------------
50     fHelper->LoadLibrary("PWGLFforward2");
51     
52     // --- Set load path ---------------------------------------------
53     gROOT->SetMacroPath(Form("%s:$(ALICE_ROOT)/PWGLF/FORWARD/analysis2",
54                              gROOT->GetMacroPath()));
55
56     // --- Get parameters --------------------------------------------
57     TString  trig   = fOptions.AsString("trig", "V0AND");
58     Double_t vzMin  = fOptions.AsDouble("vzmin", -4);
59     Double_t vzMax  = fOptions.AsDouble("vzmax", +4);
60     Bool_t   phiAcc = fOptions.AsBool("phi-acc");
61     Bool_t   aSymm  = fOptions.AsBool("asymmetric");
62
63     // --- Form arguments --------------------------------------------
64     TString args;
65     args.Form("\"%s\",%f,%f,%d,%d",
66               trig.Data(), vzMin, vzMax, phiAcc, aSymm);
67     // --- Add the task ----------------------------------------------
68     gROOT->Macro(Form("AddTaskForwardMultDists.C(%s);", args.Data()));
69   }
70   //__________________________________________________________________
71   /** 
72    * Do not the centrality selection
73    */
74   //__________________________________________________________________
75   void CreateCentralitySelection(Bool_t, AliAnalysisManager*) {}
76   /** 
77    * Do not create MC input handler 
78    * 
79    * @return Always null
80    */
81   AliVEventHandler* CreateMCHandler(UShort_t, bool) { return 0; }
82   //__________________________________________________________________
83   /** 
84    * Crete output handler - we don't want one here. 
85    * 
86    * @return 0
87    */
88   AliVEventHandler* CreateOutputHandler(UShort_t) { return 0; }
89   //__________________________________________________________________
90   const char* ClassName() const { return "MakeMultDistsTrain"; }
91   //__________________________________________________________________
92   /** 
93    * Overloaded to create new draw.C 
94    * 
95    * @param asShellScript 
96    */
97   void SaveSetup(Bool_t asShellScript)
98   {
99     TrainSetup::SaveSetup(asShellScript);
100
101     SaveSummarize();
102     SaveUnfold();
103   }
104   void SaveUnfold() 
105   {
106     std::ofstream f("Unfold.C");
107     if (!f) { 
108       Error("SaveUnfold", "Failed to open Unfold.C script");
109       return;
110     }
111     f << "// Generated by " << ClassName() << "\n"
112       << "void Unfold(const char* other=\"\",\n"
113       << "            Double_t    regP=20,\n"
114       << "            const char* here=\"forward_multdists.root\")\n"
115       << "{\n"
116       << "  const char* rooUnfold = gSystem->Getenv(\"ROOUNFOLD\");\n"
117       << "  if (rooUnfold) {\n"
118       << "    gSystem->AddIncludePath(Form(\"-I%s/src\",rooUnfold));\n"
119       << "    gSystem->AddDynamicPath(Form(\"%s\", rooUnfold));\n"
120       << "  }\n"
121       << "  gSystem->Load(\"libRooUnfold\");\n"
122       << "  const char* fwd=\"$ALICE_ROOT/PWGLF/FORWARD/analysis2\";\n"
123       << "  gROOT->LoadMacro(Form(\"%s/scripts/UnfoldMultDists.C++g\",fwd));\n"
124       << "  UnfoldMultDists(\"bayes\",regP,here,other);\n"
125       << "}\n"
126       << "// EOF" << std::endl;
127     
128     f.close();
129   }
130   void SaveSummarize()
131   {
132     std::ofstream f("Summarize.C");
133     if (!f) { 
134       Error("SaveSummarize", "Failed to open Summarize.C script");
135       return;
136     }
137     f << "// Generated by " << ClassName() << "\n"
138       << "// WHAT is a bit mask of\n"
139       << "//   0x001     Forward\n"
140       << "//   0x002     Central\n"
141       << "//   0x004     Sums\n"
142       << "//   0x008     Results\n"
143       << "//   0x010     Only min-bias (no centrality)\n"
144       << "//   0x020     Landscape\n"
145       << "//   0x040     Pause\n"
146       << "//\n"
147       << "void Summarize(const char* filename=\"forward_multdists.root\",\n"
148       << "               UShort_t what=0xF)\n"
149       << "{\n"
150       << "  const char* fwd=\"$ALICE_ROOT/PWGLF/FORWARD/analysis2\";\n"
151       << "  gROOT->LoadMacro(Form(\"%s/DrawMultDistsSummary.C\",fwd));\n"
152       << "  DrawMultDistsSummary(filename,what);\n"
153       << "}\n"
154       << "// EOF" << std::endl;
155     f.close();
156   }
157   void PostShellCode(std::ostream& f)
158   {
159     f << "  echo \"=== Summarizing results ...\"\n"
160       << "  aliroot -l -b -q ${prefix}Summarize.C\n"
161       << "  echo \"=== Unfolding ...\"\n"
162       << "  export ROOUNFOLD=${HOME}/tmp/RooUnfoldMyEdits\n"
163       << "  aliroot -l -b -q ${prefix}Unfold.C\n"
164       << std::endl;
165   }
166 };
167 //
168 // EOF
169 //