eic-shell
mkdir build; mkdir install; cd build
cmake -DCMAKE_INSTALL_PREFIX=../install -DCMAKE_BUILD_TYPE=Debug ..
make
make install
From the ROOT command line:
.L ../recoEvents/install/librecoEvents.so
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);
ana.Loop();
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
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
- 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.
TFile *_file0 = TFile::Open("podio_output.2.root");
TTree *event2 = (TTree*)gDirectory->Get("events");
recoEvents ana2(event2,0x1);
Histos can also be accessed and listed from the ROOT file system.
- 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);
-
(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)

