Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
{
  cout << "macro cos_sf: generate cosmic muons at surface" << endl;
  gROOT->Reset();
  gROOT->LoadMacro("GeneratorInterface/CosmicMuonGenerator/src/CosmicMuonGenerator.cc");
  gROOT->LoadMacro("GeneratorInterface/CosmicMuonGenerator/src/CMSCGEN.cc");
  gROOT->LoadMacro("GeneratorInterface/CosmicMuonGenerator/src/CMSCGENnorm.cc");
  gROOT->LoadMacro("GeneratorInterface/CosmicMuonGenerator/src/SingleParticleEvent.cc");

#define ROOT_INTERACTIVE true

    //*******************************
    //*******************************
    // define the generator
    CosmicMuonGenerator CosSfGen;
    // set up generator
    CosSfGen.setNumberOfEvents(100);
    CosSfGen.setRanSeed(135799468);
    CosSfGen.setMinP(3.);  	       // could be set higher for more muons to cross CMS  
    CosSfGen.setMaxP(3000.);  
    CosSfGen.setMaxTheta(84.);         // "default" value for surface
    CosSfGen.setElossScaleFactor(0.0); // "default" value for surface
    // run the generator (in this order)
    CosSfGen.runCMG();
    // rate (cosmic muons per second)
    double Rate = CosSfGen.getRate();
    //*******************************
    //*******************************

#if ROOT_INTERACTIVE
  double Weight = Rate/phi->GetEntries();  
  ene->Scale(Weight);
  the->Scale(Weight);
  phi->Scale(Weight);
  // plot results
  TCanvas *C1 = new TCanvas("cosgen","generated cosmic muons",50,50,1000,400);
  C1->SetBottomMargin(0.15);
  C1->Divide(3,1);
  C1->cd(1); gPad->SetLogy(1);
  ene->SetFillStyle(1001);
  ene->SetFillColor(1111);
  ene->SetLineWidth(1.1);
  ene->SetLineColor(8888);
  ene->Draw();
  ene->GetXaxis()->SetLabelSize(0.04);
  ene->GetXaxis()->SetTitleSize(0.044);
  ene->GetXaxis()->SetTitleOffset(0.8);
  ene->GetXaxis()->SetTitle("E [GeV]");
  ene->GetYaxis()->SetLabelSize(0.04);
  ene->GetYaxis()->SetLabelOffset(0.004);
  ene->GetYaxis()->SetTitleSize(0.044);
  ene->GetYaxis()->SetTitleOffset(1.2);
  ene->GetYaxis()->SetTitle("rate per 5 GeV [Hz]");
  C1->cd(2);
  the->SetMinimum(0.);
  the->SetFillStyle(1001);
  the->SetFillColor(1111);
  the->SetLineWidth(1.1);
  the->SetLineColor(8888);
  the->Draw();
  the->GetXaxis()->SetLabelSize(0.04);
  the->GetXaxis()->SetTitleSize(0.044);
  the->GetXaxis()->SetTitleOffset(0.8);
  the->GetXaxis()->SetTitle("#vartheta [#circ]");
  the->GetYaxis()->SetLabelSize(0.04);
  the->GetYaxis()->SetLabelOffset(0.004);
  the->GetYaxis()->SetTitleSize(0.044);
  the->GetYaxis()->SetTitleOffset(1.8);
  the->GetYaxis()->SetTitle("rate per 1 #circ [Hz]");
  C1->cd(3);
  phi->SetMinimum(0.);
  phi->SetFillStyle(1001);
  phi->SetFillColor(1111);
  phi->SetLineWidth(1.1);
  phi->SetLineColor(8888);
  phi->Draw();
  phi->GetXaxis()->SetLabelSize(0.04);
  phi->GetXaxis()->SetTitleSize(0.044);
  phi->GetXaxis()->SetTitleOffset(0.8);
  phi->GetXaxis()->SetTitle("#varphi [#circ]");
  phi->GetYaxis()->SetLabelSize(0.04);
  phi->GetYaxis()->SetLabelOffset(0.004);
  phi->GetYaxis()->SetTitleSize(0.044);
  phi->GetYaxis()->SetTitleOffset(1.8);
  phi->GetYaxis()->SetTitle("rate per 3 #circ [Hz]");

  TCanvas *C2 = new TCanvas("vertex","position of generated vertex",100,200,900,450);
  C2->SetBottomMargin(0.15);
  C2->Divide(1,1);
  C2->cd(1);
  ver->SetMarkerColor(3333);
  ver->Draw();
  ver->GetXaxis()->SetLabelSize(0.05);
  ver->GetXaxis()->SetTitleSize(0.06);
  ver->GetXaxis()->SetTitle("gen. Z [m]");
  ver->GetYaxis()->SetLabelSize(0.04);
  ver->GetYaxis()->SetTitleSize(0.05);
  ver->GetYaxis()->SetTitleOffset(1.0);
  ver->GetYaxis()->SetTitle("gen. X [m]");
  ver->GetZaxis()->SetLabelSize(0.05);
  ver->GetZaxis()->SetTitleSize(0.06);
  ver->GetZaxis()->SetTitleOffset(0.6);
  ver->GetZaxis()->SetTitle("gen. Y [m]");
#endif
}