drawtorroidmollers_rings_compare.C

Go to the documentation of this file.
00001 // 
00002 //
00003 //  Mark Dalton 2010/08
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; //in mm
00021 
00022   const Int_t totplots=4;
00023   Double_t distance[totplots]={14500,20000,24000,28250};
00024 
00025 //  const Int_t totplots=1;
00026 //  Double_t distance[totplots]={28479};
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 //    sprintf(drawstring,"y/1000:x/1000:5>>file1hist%i",i);
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 //    sprintf(drawstring,"y/1000:x/1000:3>>file2hist%i",i);
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 //      if (xmin>0) {
00107 // //         file1histos[i]->SetAxisRange(0,xmax,"X");
00108 // //         file2histos[i]->SetAxisRange(0,xmax,"X");
00109 //        file1histos[i]->GetXaxis()->SetRangeUser(0,xmax);
00110 //        file2histos[i]->GetXaxis()->SetRangeUser(0,xmax);
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 //      if (xmin>0) //file1histos[i]->GetXaxis()->SetRangeUser(0,xmax);
00118 //        gPad->SetUxmin(0);//file1histos[i]->SetAxisRange(0,xmax,"X");
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 //      if (xmin>0) //file2histos[i]->GetXaxis()->SetRangeUser(0,xmax);
00127 //        gPad->SetUxmin(0);//file1histos[i]->SetAxisRange(0,xmax,"X");
00128       canvas->Update();
00129       canvas->Print(Form("%s_%.2fm_2.png",outfilenamestem.Data(),distance[i]/1000.));
00130     }
00131   } 
00132 }
00133 
00134 /* emacs
00135  * Local Variables:
00136  * mode:C++
00137  * mode:font-lock
00138  * c-file-style: "stroustrup"
00139  * tab-width: 4
00140  * End:
00141  */

Generated on 2 Jun 2013 for mollersim by  doxygen 1.6.1