3   gROOT->LoadMacro(
"$VMCWORKDIR/gconfig/basiclibs.C");
 
    5   gSystem->Load(
"libGeoBase");
 
    6   gSystem->Load(
"libParBase");
 
    7   gSystem->Load(
"libBase");
 
    8   gSystem->Load(
"libPndData");
 
    9   gSystem->Load(
"libField");
 
   10   gSystem->Load(
"libGen");
 
   11   gSystem->Load(
"libPassive");
 
   12   gSystem->Load(
"libMvd");
 
   18   gStyle->SetHistFillColor(9);
 
   19   gStyle->SetCanvasColor(0);
 
   20   gStyle->SetLabelSize(0.025,
"X");
 
   21   gStyle->SetLabelSize(0.025,
"Y");
 
   22   gStyle->SetTitleSize(0.03,
"Y");
 
   23   gStyle->SetBarOffset(10);
 
   24   gStyle->SetTitleOffset(1,
"X");
 
   25   gStyle->SetTitleOffset(1.55,
"Y");
 
   26   gStyle->SetTitleSize(0.03,
"X");
 
   27   gStyle->SetPalette(1,0);
 
   28   gStyle->SetOptFit(1111);
 
   30   TCanvas* 
can1 = 
new TCanvas(
"test",
"Energy in MVD",200,200,1100,800);
 
   31   TCanvas* 
can2 = 
new TCanvas(
"test2",
"Energy in MVD",200,200,1100,800);
 
   35         TH2D * 
hist4 = 
new TH2D(
"EnergyLossVsP",
"dE(p) gemittelt  ueber alle Hits pro Track",200,0.02,3,200,0,0.0005);
 
   37         TH2D * 
hist5 = 
new TH2D(
"EnergyLossVsP1",
"dE(p)",200,0.02,3,200,0,0.0005);
 
   39         TH2D * 
hist6 = 
new TH2D(
"EnergyLossVsP2",
"dE(p)",200,0.02,3,200,0,0.0005);
 
   41         TH2D * 
hist7 = 
new TH2D(
"specEnergyLossVsP1",
"dE/dx(p)  gemittelt  ueber alle Hits pro Track",200,0.02,1,200,0,0.0005);
 
   43         TH2D * 
hist8 = 
new TH2D(
"specEnergyLossVsP2",
"dE/dx(p)",200,0.02,1,200,0,0.0005);
 
   45         TH2D * 
hist9 = 
new TH2D(
"specEnergyLossVsP3",
"dE/dx(p)",200,0.02,1,200,0,0.0005);
 
   47         TH2D * 
hist10 = 
new TH2D(
"specEnergyLossVsP4",
"dE/dx(p)",200,0.0,1,200,0,0.0005);
 
   50         TF1 *
bk = 
new TF1(
"bk",
"((x-0.05)*1000)/(sqrt(sq(439.71)+(sq((x-0.05)*1000))))",0,1);
 
   51         TF1 *
bk2 = 
new TF1(
"bk1",
"((x-0.08)*1000)/(sqrt(sq(439.71)+(sq((x-0.08)*1000))))",0,1);
 
   52         TF1 *
bk3 = 
new TF1(
"bk2",
"((x+0.0)*1000)/(sqrt(sq(439.71)+(sq((x+0.0)*1000))))",0,1);
 
   53         TF1 *
dEBBk = 
new TF1(
"dEBBk",
"((11*sq(14)*1.5)/(sq(bk)*10000000))*(log((2*1000000*0.511*sq(bk))/(13.5*14))-log(1-sq(bk))-sq(bk))",0,1);
 
   54         dEBBk->SetFillColor(3);
 
   55         TF1 *
dEBBku = 
new TF1(
"dEBBku",
".0008+((11*sq(14)*1.5)/(sq(bk1)*10000000))*(log((2*1000000*0.511*sq(bk1))/(13.5*14))-log(1-sq(bk1))-sq(bk1))",0,1);
 
   56         dEBBk->SetFillColor(30);
 
   57         TF1 *
dEBBkl = 
new TF1(
"dEBBkl",
"-.00125+((11*sq(14)*1.5)/(sq(bk2)*10000000))*(log((2*1000000*0.511*sq(bk2))/(13.5*14))-log(1-sq(bk2))-sq(bk2))",0,1);
 
   58         dEBBk->SetFillColor(30);
 
   61         TF1 *
bpi = 
new TF1(
"bpi",
"(x*1000)/(sqrt(sq(139.57)+(sq(x*1000))))",0,1);
 
   62         TF1 *
dEBBpi = 
new TF1(
"dEBBpi",
"((2.5*sq(14)*1.5)/(sq(bpi)*0.313*10000000))*(log((2*1000000*0.511*sq(bpi))/(13.5*14))-log(1-sq(bpi))-sq(bpi))",0,1);
 
   63   TF1 *bpi = 
new TF1(
"bpiu",
"((x-0.05)*1000)/(sqrt(sq(139.57)+(sq((x-0.05)*1000))))",0,1);
 
   64         TF1 *
dEBBpiu = 
new TF1(
"dEBBpiu",
".0012+((2.5*sq(14)*1.5)/(sq(bpiu)*0.313*10000000))*(log((2*1000000*0.511*sq(bpiu))/(13.5*14))-log(1-sq(bpiu))-sq(bpiu))",0.03,1);
 
   65   TF1 *bpi = 
new TF1(
"bpil",
"((x)*1000)/(sqrt(sq(139.57)+(sq((x)*1000))))",0,1);
 
   66         TF1 *
dEBBpil = 
new TF1(
"dEBBpil",
"-.0005+((2.5*sq(14)*1.5)/(sq(bpil)*0.313*10000000))*(log((2*1000000*0.511*sq(bpil))/(13.5*14))-log(1-sq(bpil))-sq(bpil))",0,1);
 
   69         TF1 *
bp = 
new TF1(
"bp",
"((x-0.05)*1000)/(sqrt(sq(938.26)+(sq(0.05*1000))))",0,1);
 
   70         TF1 *
dEBBp = 
new TF1(
"dEBBp",
"((23*sq(14)*1.5)/(sq(bp)*2.133*10000000))*(log((2*1000000*0.511*sq(bp))/(13.5*14))-log(1-sq(bp))-sq(bp))",0,1);
 
   71   TF1 *bp = 
new TF1(
"bpu",
"((x-0.1)*1000)/(sqrt(sq(938.26)+(sq((x-0.1)*1000))))",0,1);
 
   72         TF1 *
dEBBpu = 
new TF1(
"dEBBpu",
".0005+((23*sq(14)*1.5)/(sq(bpu)*2.133*10000000))*(log((2*1000000*0.511*sq(bpu))/(13.5*14))-log(1-sq(bpu))-sq(bpu))",0.014,1);
 
   73   TF1 *bp = 
new TF1(
"bpl",
"((x+0.0)*1000)/(sqrt(sq(938.26)+(sq((x+0.0)*1000))))",0,1);
 
   74         TF1 *
dEBBpl = 
new TF1(
"dEBBpl",
"-.0010+((22*sq(14)*1.5)/(sq(bpl)*2.133*10000000))*(log((2*1000000*0.511*sq(bpl))/(13.5*14))-log(1-sq(bpl))-sq(bpl))",0,3);
 
   80         TH1D* 
hist1 = 
new TH1D(
"specEnergyLoss",
"dE",100,0,0.0004);
 
   81         hist1->SetFillColor(2);
 
   82         TH1D* 
hist2 = 
new TH1D(
"specEnergyLoss",
"dE1",100,0,0.0004);
 
   83         hist2->SetFillColor(3);
 
   84         TH1D* 
hist3 = 
new TH1D(
"specEnergyLoss",
"dE2",100,0,0.00040);
 
   85         hist3->SetFillColor(4);
 
   94   TFile* 
inFile = 
new TFile(
"/data_hilbert/PandaData/tbaldauf/MvdMC_PiKP2_50k.root",
"READ");
 
   95   TTree* 
tree = (TTree *)inFile->Get(
"pndsim");
 
   96   TClonesArray* 
pointlist=
new TClonesArray(
"PndSdsMCPoint");
 
   97   tree->SetBranchAddress(
"MVDPoint",&pointlist);
 
   98   TClonesArray* 
mc_array=
new TClonesArray(
"PndMCTrack");
 
   99   tree->SetBranchAddress(
"MCTrack",&mc_array);
 
  108   Double_t dE0,
dE1,
dE2,
dE3,
pF0,
pF1,
pF2,
pF3,
dEX0,
dEX1,
dEX2,
dEX3;
 
  116   TPad *
p1=
new TPad(
"1",
"1",0,0,0.7,1);
 
  117         TPad *
p2=
new TPad(
"2",
"2",0.7,0,1,1);
 
  123   hist4->SetYTitle(
"dE/GeV");
 
  124   hist4->SetXTitle(
"p/(GeV/c)");
 
  125   hist7->SetYTitle(
"(dE/dx)/(GeV/cm)");
 
  126   hist7->SetXTitle(
"p/(GeV/c)");
 
  127         hist10->SetYTitle(
"(dE/dx)/(GeV/cm)");
 
  128   hist10->SetXTitle(
"p/(GeV/c)");
 
  130   for(
int w=0;w<25;w++)
 
  135   for(
int j=0;j<nEvents && j<tree->GetEntriesFast();j++)
 
  137                 t0=0;t1=0;t2=0;dE0=0;dE1=0;dE2=0;dEX0=0;dEX1=0;dEX2=0;pF0=0;pF1=0;pF2=0;
 
  140                 for(
int i=0;
i<pointlist->GetEntriesFast();
i++)
 
  143                 vecFront=(point->GetX(),point->GetY(),point->GetZ());
 
  150                 cout<<
"dx=  "<<dx<<endl;
 
  151                 cout<<
"P=  "<<vecPBack.Mag()<<endl;
 
  152                 if(point->GetTrackID()==0)
 
  156                         dE0=dE0+(point->GetEnergyLoss());
 
  157                         pF0=pF0+vecPFront.Mag();
 
  160                           cout<<
"0 "<<
pdcid<<endl;
 
  161                           cout<<
"Eloss "<<(point->GetEnergyLoss())<<endl;
 
  162                           hist7->Fill(vecPBack.Mag(),point->GetEnergyLoss()/
dx);
 
  163                           dEX0=dEX0+((point->GetEnergyLoss())/dx);
 
  167                 if(point->GetTrackID()==1)
 
  170                         dE1=dE1+point->GetEnergyLoss();
 
  171                           pF1=pF1+vecPFront.Mag();
 
  174                           cout<<
"1  "<<
pdcid<<endl;
 
  175                             cout<<
"Eloss "<<(point->GetEnergyLoss())<<endl;
 
  176                             dEX1=dEX1+((point->GetEnergyLoss())/dx);
 
  179                 if(point->GetTrackID()==2)
 
  183                         dE2=dE2+point->GetEnergyLoss();
 
  184                         pF2=pF2+vecPFront.Mag();
 
  187                         dEX2=dEX2+((point->GetEnergyLoss())/dx);
 
  190                 if(point->GetTrackID()>5)
 
  193                         dE3=point->GetEnergyLoss();
 
  197                                 dEX3=((point->GetEnergyLoss())/dx);
 
  199                         hist10->Fill(pF3,dEX3);
 
  203                                 if((pF3>0.11)&&((dEX3)<(dEBBku->Eval(pF3,0,0)))&&((
dEX3)>(dEBBkl->Eval(pF3,0,0)))) 
 
  208                                 if((pF3>0.2)&&((
dEX3)<(dEBBpu->Eval(pF3,0,0)))&&((dEX3>(dEBBpl->Eval(pF3,0,0))))) 
 
  211                                         hist10->Fill(pF3,dEX3);
 
  214                                 if((pF3>0.03)&&((dEX3)<(dEBBpiu->Eval(pF3,0,0)))&&((
dEX3)>(dEBBpil->Eval(pF3,0,0)))) 
 
  217                                         hist10->Fill(pF3,dEX3);
 
  363 dEBBpiu->Draw(
"same C");
 
  364 dEBBpil->Draw(
"same C");
 
  538   cout << endl << endl;
 
  539   cout << 
"Macro finished succesfully." << endl;
 
  540   cout << 
"Real time " << rtime << 
" s, CPU time " << ctime << 
" s" << endl;
 
Double_t GetPyOut() const 
Double_t GetPxOut() const 
Double_t GetPzOut() const