ROOT logo
/**
 * Script to draw the energy loss fits 
 * 
 * @ingroup pwglf_forward_scripts_corr
 */

//____________________________________________________________________
/** 
 * Extract the energy loss correction object from file and rename it 
 * according to the settings 
 * 
 * @param fname  File to extract from 
 * @param mc     Whether this is from MC data or not 
 * @param runNo  Run number 
 * @param sys    Collision system (pp, PbPb)
 * @param sNN    Center of mass energy (in GeV) per nucleon
 * @param fld    L3 magnetic field (-5,0,5) in kGaus
 * @param sat    For satellite interactions 
 * 
 * @ingroup pwglf_forward_scripts_corr
 */
void
ExtractELoss(const char* fname = "forward_eloss.root",
	     Bool_t   mc=false, 
	     ULong_t  runNo=0, 
	     UShort_t sys=0,
	     UShort_t sNN=0,
	     Short_t  fld=999,
	     Bool_t   sat=false)
{
  const char* fwd = "$ALICE_ROOT/PWGLF/FORWARD/analysis2";
  gSystem->AddIncludePath(Form("-I%s -I$ALICE_ROOT/include", fwd));
  gROOT->Macro(Form("%s/scripts/LoadLibs.C", fwd));
  gROOT->LoadMacro(Form("%s/corrs/CorrExtractor.C++g", fwd));
  
  CorrExtractor fmdEx(&AliForwardCorrectionManager::Instance());
  fmdEx.SetMC(mc);
  if (runNo >  0)   fmdEx.fRunNo     = runNo;
  if (sys   >  0)   fmdEx.fSys       = sys;
  if (sNN   >  0)   fmdEx.fSNN       = sNN;
  if (fld   <  999) fmdEx.fField     = fld;
  if (sat)          fmdEx.fSatellite = sat;
  if (fmdEx.Init(fname, "ForwardELossSums", "fmd_corrections.root")) 
    fmdEx.Extract(AliFMDCorrELossFit::Class(),
		  "ForwardELossResults/fmdEnergyFitter");

  std::ofstream f("Upload.C");
  f << "// Generated by ExtractELoss.C\n"
    << "TString MakeDest(const TString& dest, const TString& fname)\n"
    << "{\n"
    << "  TString tmp(dest);\n"
    << "  if (!tmp.IsNull()) {\n"
    << "    if (!tmp.EndsWith(\"/\")) tmp.Append(\"/\");\n"
    << "    tmp.Append(fname);\n"
    << "  }\n"
    << "  return tmp;\n"
    << "}\n\n"
    << "void Upload(const TString& dest=\"\")\n"
    << "{\n"
    << "  gROOT->Macro(\"" << fwd << "/scripts/LoadLibs.C\");\n"
    << "  \n"
    << "  const char* fmdFile = \"fmd_corrections.root\";\n"
    << "  TString fdest = MakeDest(dest, fmdFile);\n"
    << "  \n"
    << "  AliForwardCorrectionManager::Instance().Append(fmdFile, fdest);\n"
    << "}\n"
    << "// EOF\n"
    << std::endl;
  f.close();
}

//____________________________________________________________________
//
// EOF
//
 ExtractELoss.C:1
 ExtractELoss.C:2
 ExtractELoss.C:3
 ExtractELoss.C:4
 ExtractELoss.C:5
 ExtractELoss.C:6
 ExtractELoss.C:7
 ExtractELoss.C:8
 ExtractELoss.C:9
 ExtractELoss.C:10
 ExtractELoss.C:11
 ExtractELoss.C:12
 ExtractELoss.C:13
 ExtractELoss.C:14
 ExtractELoss.C:15
 ExtractELoss.C:16
 ExtractELoss.C:17
 ExtractELoss.C:18
 ExtractELoss.C:19
 ExtractELoss.C:20
 ExtractELoss.C:21
 ExtractELoss.C:22
 ExtractELoss.C:23
 ExtractELoss.C:24
 ExtractELoss.C:25
 ExtractELoss.C:26
 ExtractELoss.C:27
 ExtractELoss.C:28
 ExtractELoss.C:29
 ExtractELoss.C:30
 ExtractELoss.C:31
 ExtractELoss.C:32
 ExtractELoss.C:33
 ExtractELoss.C:34
 ExtractELoss.C:35
 ExtractELoss.C:36
 ExtractELoss.C:37
 ExtractELoss.C:38
 ExtractELoss.C:39
 ExtractELoss.C:40
 ExtractELoss.C:41
 ExtractELoss.C:42
 ExtractELoss.C:43
 ExtractELoss.C:44
 ExtractELoss.C:45
 ExtractELoss.C:46
 ExtractELoss.C:47
 ExtractELoss.C:48
 ExtractELoss.C:49
 ExtractELoss.C:50
 ExtractELoss.C:51
 ExtractELoss.C:52
 ExtractELoss.C:53
 ExtractELoss.C:54
 ExtractELoss.C:55
 ExtractELoss.C:56
 ExtractELoss.C:57
 ExtractELoss.C:58
 ExtractELoss.C:59
 ExtractELoss.C:60
 ExtractELoss.C:61
 ExtractELoss.C:62
 ExtractELoss.C:63
 ExtractELoss.C:64
 ExtractELoss.C:65
 ExtractELoss.C:66
 ExtractELoss.C:67
 ExtractELoss.C:68
 ExtractELoss.C:69
 ExtractELoss.C:70
 ExtractELoss.C:71
 ExtractELoss.C:72
 ExtractELoss.C:73
 ExtractELoss.C:74
 ExtractELoss.C:75
 ExtractELoss.C:76