00001
00002
00003 using namespace std;
00004
00005 void drawtorroidmollers_rings(TString infilename="0", TString outfilenamestem="0")
00006 {
00007 if (infilename=="0" || outfilenamestem=="0") {
00008 printf("Usage:\n\t.x drawtorroidmollers_rings_stamps.C(infilename, outfilename)\n\n");
00009 printf("Where infilename is a .root file \n");
00010 printf(" and outfilenamestem is the base name of an image file.\n");
00011 return;
00012 }
00013
00014 gROOT->Reset();
00015 char inifilename[200];
00016
00017 Bool_t debug=0;
00018
00019
00020
00021 Double_t deltaZwindowsize=20;
00022
00023 sprintf(inifilename,"%s",infilename.Data());
00024
00025 const Int_t totplots=6;
00026 Double_t distance[totplots]={6000,9000,14500,20000,24000,28250};
00027 TH2F* histos[totplots];
00028
00029
00030
00031
00032 char pstitle[200];
00033
00034 printf("Using data file %s\n",inifilename);
00035 gROOT->SetStyle("Plain");
00036 gStyle->SetPalette(1);
00037 gStyle->SetOptStat(kFALSE);
00038 TFile *file0 = TFile::Open(inifilename);
00039 TCanvas *canvas = new TCanvas("canvas","Moller plots",800,800);
00040
00041 char title[100];
00042 char weight[200];
00043 TGraph* scat[totplots];
00044 TLine line;
00045 TArc arc;
00046 arc.SetFillStyle(4000);
00047 arc.SetNoEdges(kFALSE);
00048 Double_t pi=3.14159265358979323846;
00049 Double_t length=600, openingangle=pi/14.;
00050 Double_t ymin, ymax, xmin, xmax;
00051 TTree *geant = (TTree*)file0->Get("geant");
00052 geant->SetMarkerStyle(20);
00053 geant->SetMarkerSize(0.15);
00054 for (int i=0; i<totplots; i++) {
00055 char drawstring[200];
00056 sprintf(drawstring,"y/1000:x/1000:1000*acos(pz2/sqrt(px2*px2+py2*py2+pz2*pz2))>>htemp%i",i);
00057 sprintf(weight,"(z>(%.0f)&&z<(%.0f)&&type==0)",distance[i]-deltaZwindowsize,distance[i]+deltaZwindowsize);
00058 if (debug) printf("%s\n%s\n",drawstring,weight);
00059 canvas->cd(i+1);
00060 Int_t num = geant->Draw(drawstring,weight,"colz");
00061 histos[i]=(TH2F*)gPad->GetPrimitive(Form("htemp%i",i));
00062 if (num<=0) {
00063 printf("\n%.0f doesn't seem to be a good choice!\n\n",distance[i]);
00064 } else {
00065 if (debug) printf("%i successful events\n",num);
00066 gPad->SetRightMargin(0.12);
00067 gPad->SetLeftMargin(0.12);
00068 gPad->SetTopMargin(0.12);
00069 gPad->SetBottomMargin(0.12);
00070 canvas->Update();
00071 ymin=gPad->GetUymin();
00072 ymax=gPad->GetUymax();
00073 xmin=gPad->GetUxmin();
00074 xmax=gPad->GetUxmax();
00075 printf("xmin %f, xmax %f, ymin %f, ymax %f, deltax %f, deltay %f\n",xmin,xmax,ymin,ymax,xmax-xmin,ymax-ymin);
00076 }
00077 sprintf(title,"z=%.2f m;x (m);y (m)", distance[i]/1000.);
00078 histos[i]->SetTitle(title);
00079 canvas->Update();
00080 canvas->Print(Form("%s_%.2fm.png",outfilenamestem.Data(),distance[i]/1000.));
00081 }
00082 }
00083
00084
00085
00086
00087
00088
00089
00090
00091