Skip to content
Snippets Groups Projects
simple_checking_crystal.cxx 887 B
Newer Older
  • Learn to ignore specific revisions
  • R__LOAD_LIBRARY(libDDG4IO.so)
    #include "DDG4/Geant4Data.h"
    #include "ROOT/RDataFrame.hxx"
    #include "TCanvas.h"
    #include "TChain.h"
    #include <random>
    
    void simple_checking_crystal(const char* fname = "sim_output/output_emcal_electrons.root"){
      ROOT::EnableImplicitMT(); // Tell ROOT you want to go parallel
      double degree = TMath::Pi()/180.0;
    
      TChain* t = new TChain("EVENT");
      t->Add(fname);
    
      ROOT::RDataFrame d0(*t);//, {"EcalHits","MCParticles"});
      
      auto nhits = [] (std::vector<dd4hep::sim::Geant4Calorimeter::Hit*>& hits){ return (int) hits.size(); };
    
    
    Jihee Kim's avatar
    Jihee Kim committed
      auto d1 = d0.Define("nhits", nhits, {"EcalHits"});
    
      auto h0 = d1.Histo1D(TH1D("h0", "nhits; ", 20, 0,20), "nhits");
    
      auto n0 = d1.Filter([](int n){ return (n>0); },{"nhits"}).Count();
    
      TCanvas* c = new TCanvas();
    
      std::cout << *n0 << " events with nonzero hits\n";
      if(*n0<5) {
        std::quick_exit(1);
      }
    
    }