Skip to content

ybedfer/recoEvents

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

<style type="text/css"> red { color: #d02; font-family: monospace} </style>

recoEvents: Project the events TTree of the podio_output of eicrecon

Contents

Installation

eic-shell
mkdir build; mkdir install; cd build
cmake -DCMAKE_INSTALL_PREFIX=../install -DCMAKE_BUILD_TYPE=Debug ..
make
make install

Usage

From the ROOT command line:

Load shared lib:

.L ../recoEvents/install/librecoEvents.so

Instantiate:

TFile *_file0 = TFile::Open("podio_output.root");
TTree *events = (TTree*)gDirectory->Get("events");
// Instantiate a recoEvents object w/ as arg.s:
// - pointer to events TTree
// - bit pattern: 0x1:CyMBaL, 0x2:Outer, 0x4: BECT, 0x8: FECT, 0x10:Vertex, 0x20:Si.
recoEvents ana(events,0xf);

Loop on events:

ana.Loop();

Draw histos:

ana.DrawphithZR(0,0x1);    // TCanvas of SimHits of 0x1:CyMBaL...
ana.DrawphithZR(0,0x1,1); // ...same w/ some decorations
ana.DrawphithZR(0,0x2,1); // ...same for SimHits of 0x2:Outer
ana.DrawResiduals(0x1);    // (RecHit-SimHit) residuals for 0x1:CyMBaL

new TCanvas("c2D");
ana.recHs[0].XY->Draw();       // Draw Y vs. X for RecHits of [0]:CyMBal
ana.simHs[4].ZR->Draw();       // Draw R vs. Z for SimHits of [4]:Vertex
ana.rawHs[1][0].chN->Draw(); // Draw RawHits for of [1]: 2nd coord of [0]:CyMBaL

Event control, debugging:

ana.requirePDG = 13;     // Require MCParticle = mu-
ana.requireQuality = 1; // !=0: Require primary w/o any interfering secondary in same mdoule.
ana.requireQuality = 2; // !=0: In addition, require single hit.
ana.verbose = 0x1111;    // Debugging printout (1 for CyMBaL, 2 for Outer...)

ana.select = new TTreeFormula("select", "@MCParticles.size()==1", events); // Add rejection cut

Subvolumes:

  • 5-SUBVOLUME is default. SimHits from MPGDs are coalesced alla MPGDTrackerDigi.
  • Enforce single-SUBVOLUIME:

recoEvents ana(events,0xf,0x0); // Instantiate w/ no strips (i.e. w/ pixels) in CyMBaL and Outer
ana.SetNSensitiveSurfaces(1);    // Overwrite default.

Instantiate a second recoEvents object:

TFile *_file0 = TFile::Open("podio_output.2.root");
TTree *event2 = (TTree*)gDirectory->Get("events");
recoEvents ana2(event2,0x1);

ROOT file system:

Histos can also be accessed and listed from the ROOT file system.

Examples

  • SimHits
    • Generation
    npsim --steeringFile examples/steeringFile.py --compactFile $DETECTOR_PATH/epic_craterlake_tracking_only.xml \\
      -G -v ERROR -N $num --random.seed 1234 -O edm4hep.example.1234.root
    
    
    • Projection
.L ~/eic/recoEvents/install/librecoEvents.so 
TFile *_file0 = TFile::Open("edm4hep.example.1234.root")
TTree *t = (TTree*)gDirectory->Get("events");
recoEvents ana1(t,0x3f,0x3);
ana1.Loop();
ana1.DrawphithZR(0,0x4,0x1d,true);

BECT SimHits

  • (RecHits-SimHits) Residuals

    • Generation
    eicrecon -Peicrecon:LogLevel=error -Pjana:nevents=16000 -PMPGD:SiFactoryPattern=0x0 \\
      -Ppodio:output_file=podio.example.1234.root edm4hep.example.1234.root
    
    • Projection

    Residuals (RecHits-SimHits), for isolated muons, highlighting edges in red.

    TFile *_file1 = TFile::Open("podio.example.1234.root")
    TTree *t = (TTree*)gDirectory->Get("events");
    recoEvents ana2(t,0x3f,0x3), *ana = ana2;
    ana->requirePDG = 13; ana->requireQuality = 2;
    ana->Loop();
    recoEvents ana3(t,0x3f,0x3), *ana = &ana3;
    ana->requirePDG = 13; ana->requireQuality = 2;
    ana3.requireOffEdge = -1;
    ana->Loop();
    ana = &ana2;
    ana->DrawResiduals(1,0x1,0x6)
    ana->DrawResiduals(2,0x1,0x6,cCyMBaL1Res,3)
    ana = &ana3
    ana->DrawResiduals(1,0x1,0x6,cCyMBaL1Res,1,2)
    ana->DrawResiduals(2,0x1,0x6,cCyMBaL1Res,3,2)
    

CyMBaL (RecHits-SimHits) residuals










About

Project the events TTree of the podio_output of eicrecon

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors