00001
00002
00003
00004
00005 using namespace std;
00006
00007 void drawtorroidmollers_rings_compare(TString infilename1="0", TString infilename2="0",
00008 TString outfilenamestem="0", TString usercut="1")
00009 {
00010 if (infilename1=="0" || infilename2=="0" || outfilenamestem=="0") {
00011 printf("Usage:\n\t.x drawtorroidmollers_rings_stamps.C(infilename1, infilename2, outfilename, [cut])\n\n");
00012 printf("Where infilenames is a .root file \n");
00013 printf(" outfilenamestem is the base name of an image file, and\n");
00014 printf(" cut is a cut string applied to the tree.\n");
00015 return;
00016 }
00017
00018 gROOT->Reset();
00019 Bool_t debug=1;
00020 Double_t deltaZwindowsize=25;
00021
00022 const Int_t totplots=4;
00023 Double_t distance[totplots]={14500,20000,24000,28250};
00024
00025
00026
00027
00028 char pstitle[200];
00029
00030 printf("Using data files %s\n and %s \n\n",infilename1.Data(), infilename2.Data());
00031 gROOT->SetStyle("Plain");
00032 gStyle->SetPalette(1);
00033 gStyle->SetOptStat(kFALSE);
00034 TFile *file1 = TFile::Open(infilename1.Data());
00035 TTree *tree1 = (TTree*)file1->Get("geant");
00036 TFile *file2 = TFile::Open(infilename2.Data());
00037 TTree *tree2 = (TTree*)file2->Get("geant");
00038 TH2F* file1histos[totplots];
00039 TH2F* file2histos[totplots];
00040
00041 Int_t Palette1[100],Palette2[100];
00042 UInt_t Number = 2;
00043 Int_t nb=20;
00044
00045 Double_t Red[] = { 1.00, 1.00};
00046 Double_t Green[] = { 0.00, 0.00};
00047 Double_t Blue[] = { 1.00, 0.00};
00048 Double_t Length[] = { 0.00, 1.00};
00049 Int_t FI = TColor::CreateGradientColorTable(Number,Length,Red,Green,Blue,nb);
00050 for (int i=0;i<nb;i++) Palette1[i] = FI+i;
00051
00052 Double_t Red[] = { 0.00, 0.00};
00053 Double_t Green[] = { 1.00, 0.00};
00054 Double_t Blue[] = { 1.00, 1.00};
00055 TColor::CreateGradientColorTable(Number,Length,Red,Green,Blue,nb);
00056 Int_t FI = TColor::CreateGradientColorTable(Number,Length,Red,Green,Blue,nb);
00057 for (int i=0;i<nb;i++) Palette2[i] = FI+i;
00058
00059 TCanvas *canvas = new TCanvas("canvas","Moller plots",800,800);
00060 char title[100];
00061 char weight[200];
00062 TGraph* scat[totplots];
00063 TLine line;
00064 TArc arc;
00065 arc.SetFillStyle(4000);
00066 arc.SetNoEdges(kFALSE);
00067 Double_t pi=3.14159265358979323846;
00068 Double_t ymin, ymax, xmin, xmax;
00069
00070 tree1->SetMarkerStyle(20);
00071 tree1->SetMarkerSize(0.15);
00072 tree2->SetMarkerStyle(20);
00073 tree2->SetMarkerSize(0.15);
00074 for (int i=0; i<totplots; i++) {
00075 char drawstring[400];
00076 gStyle->SetPalette(nb, Palette1);
00077 sprintf(drawstring,"y/1000:x/1000:1000*acos(pz2/sqrt(px2*px2+py2*py2+pz2*pz2))>>file1hist%i",i);
00078
00079 sprintf(weight,"(z>(%.0f)&&z<(%.0f)&&type==0)&&(%s)",distance[i]-deltaZwindowsize,distance[i]+deltaZwindowsize,usercut.Data());
00080 if (debug) printf("%s\n%s\n",drawstring,weight);
00081 Int_t num1 = tree2->Draw(drawstring,weight,"col");
00082 file1histos[i]=(TH2F*)gPad->GetPrimitive(Form("file1hist%i",i));
00083
00084 gStyle->SetPalette(nb, Palette2);
00085 sprintf(drawstring,"y/1000:x/1000:1000*acos(pz2/sqrt(px2*px2+py2*py2+pz2*pz2))>>file2hist%i",i);
00086
00087 if (debug) printf("%s\n%s\n",drawstring,weight);
00088 Int_t num2 = tree1->Draw(drawstring,weight,"col");
00089 file2histos[i]=(TH2F*)gPad->GetPrimitive(Form("file2hist%i",i));
00090
00091 if (num1<=0 || num2<=0) {
00092 printf("%i and %i successful events\n",num1,num2);
00093 printf("\n%.0f doesn't seem to be a good choice!\n\n",distance[i]);
00094 } else {
00095 if (debug) printf("%i and %i successful events\n",num1,num2);
00096 gPad->SetRightMargin(0.1);
00097 gPad->SetLeftMargin(0.1);
00098 gPad->SetTopMargin(0.1);
00099 gPad->SetBottomMargin(0.1);
00100 canvas->Update();
00101 ymin=gPad->GetUymin();
00102 ymax=gPad->GetUymax();
00103 xmin=gPad->GetUxmin();
00104 xmax=gPad->GetUxmax();
00105 printf("xmin %f, xmax %f, ymin %f, ymax %f, deltax %f, deltay %f\n",xmin,xmax,ymin,ymax,xmax-xmin,ymax-ymin);
00106
00107
00108
00109
00110
00111
00112 sprintf(title,"z=%.2f m;x (m);y (m)", distance[i]/1000.);
00113 file1histos[i]->SetTitle(title);
00114 file2histos[i]->SetTitle(title);
00115 canvas->Clear();
00116 file1histos[i]->Draw("colz");
00117
00118
00119 canvas->Update();
00120 canvas->Print(Form("%s_%.2fm_1.png",outfilenamestem.Data(),distance[i]/1000.));
00121 file2histos[i]->Draw("col,same");
00122 canvas->Update();
00123 canvas->Print(Form("%s_%.2fm.png",outfilenamestem.Data(),distance[i]/1000.));
00124 canvas->Clear();
00125 file2histos[i]->Draw("colz");
00126
00127
00128 canvas->Update();
00129 canvas->Print(Form("%s_%.2fm_2.png",outfilenamestem.Data(),distance[i]/1000.));
00130 }
00131 }
00132 }
00133
00134
00135
00136
00137
00138
00139
00140
00141