Skip to content

Instantly share code, notes, and snippets.

@mgmarino
Created October 20, 2011 16:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mgmarino/1301524 to your computer and use it in GitHub Desktop.
Save mgmarino/1301524 to your computer and use it in GitHub Desktop.
Calculate rise-time for signals
import ROOT
import sys
import array
# Load EXO software
ROOT.gSystem.Load("libEXOROOT")
#Load aliases
ROOT.gROOT.ProcessLine(".L /var/www/htmldoc/exo_tree_alias.C")
# Baseline Transformer
baseline = ROOT.EXOBaselineRemover()
init_baseline_time = 100e3
baseline.SetBaselineTime(init_baseline_time)
# Extremum Transformer
extremum = ROOT.EXOExtremumFinder()
extremum.SetFindMaximum()
# Setting parameters of the risetime
rise = ROOT.EXORisetimeCalculation()
rise.SetInitialThresholdPercentage(0.1) #10 %
rise.SetFinalThresholdPercentage(0.9) #90%
rise.SetInitialScanToPercentage(0.5) #50%
the_file = ROOT.TFile(sys.argv[1])
the_tree = the_file.Get("tree")
# set aliases.
ROOT.SetEXOAlias(the_tree)
#c1 = ROOT.TCanvas()
output_file = ROOT.TFile("output.root", "recreate")
output_tree = ROOT.TTree("output_tree", "output_tree")
rise_time = array.array('d', [0])
energy = array.array('d', [0])
output_tree.Branch("rise", rise_time, "rise/D")
output_tree.Branch("energy", energy, "energy/D")
for i in range(the_tree.GetEntries()):
the_tree.GetEntry(i)
entry = the_tree.EventBranch
wf_data = entry.GetWaveformData()
wf_data.Decompress()
for clus in entry.GetChargeClusterArray():
for j in range(clus.GetNumUWireSignals()):
uwire = clus.GetUWireSignalAt(j)
chan = uwire.fChannel
energy[0] = uwire.fRawEnergy
wf = wf_data.GetWaveformWithChannel(chan).Convert()
baseline.Transform(wf)
extremum.Transform(wf)
rise.SetPulsePeakHeight(extremum.GetTheExtremumValue())
rise.Transform(wf)
rise_time[0] = rise.GetRiseTime()/1000
#wf.GimmeHist().Draw()
#c1.Update()
#raw_input("E")
output_tree.Fill()
output_file.cd()
output_tree.Write()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment