ROOT logo
//____________________________________________________________________
//
// Script to draw a X-section, LOSS, or range made with MakeXsection
//
/** @ingroup xsec_script
    @param scale 
    @param filename 
    @param var 
    @param medName 
    @param thick 
    @param pdgName 
*/
void
DrawXsection(Bool_t scale=kFALSE, 
	     const char* filename="xsec.root", 
	     const char* var="LOSS", 
	     const char* medName="FMD_Si$", 
	     Double_t thick=.03,
	     const char* pdgName="pi+")
{
  TFile*   file = TFile::Open(filename, "READ");
  TTree*   tree = static_cast<TTree*>(file->Get(Form("%s_%s",medName,
						     pdgName)));
  TLeaf* tb   = tree->GetLeaf("T");
  TLeaf* vb   = tree->GetLeaf(var);
  if (!vb) {
    std::cerr << "Leaf " << var << " not found" << std::endl;
    return;
  }
  Float_t tkine, value;
  tb->SetAddress(&tkine);
  vb->SetAddress(&value);
  Int_t n = tree->GetEntries();

  Float_t xscale = 1;
  Float_t yscale = 1;
  if (scale) {
    TDatabasePDG* pdgDb = TDatabasePDG::Instance();
    TParticlePDG* pdgP  = pdgDb->GetParticle(pdgName);
    if (!pdgP) {
      std::cerr << "Couldn't find particle " << pdgName << std::endl;
      return;
    }
    Double_t m = pdgP->Mass();
    Double_t q = pdgP->Charge() / 3;
    if (m == 0 || q == 0) {
      std::cerr  << "Mass is 0" << std::endl;
      return;
    }
    xscale = 1 / m;
    yscale = 1 / (q * q);
  }
  
  TGraphErrors* graph = new TGraphErrors(n);
  for (Int_t i = 0; i < n; i++) {
    tree->GetEntry(i);
    Double_t x = tkine*xscale;
    Double_t y = value*yscale;
    graph->SetPoint(i, x, y); 
    // 5 sigma
    graph->SetPointError(i, 0, 5 * .1 * y);
  }
  TCanvas* c = new TCanvas("c","c");
  c->SetLogx();
  c->SetLogy();
  graph->SetLineWidth(2);
  graph->SetFillStyle(3001);
  graph->SetFillColor(6);
  graph->Draw("L");
  graph->DrawClone("AL3");
  c->Modified();
  c->Update();
  c->cd();
  c->SaveAs("xsec.C");
  
}

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