for anAmp in amps: print 'running', anAmp counter = 0 simpulse.setpar(1, anAmp/scaleFactor) #this scale factor is here to force the amplitude to be equal to simsignalAmp while True: #generate a trace - but randomStart = _pulseStartTime + random.uniform(-10, 80) #smear the start time simpulse.setpar(0, randomStart ) simnoise.generate() simsignal = simnoise + simpulse myOptimalFilter.calcAmp(simsignal) tree.amp_in = anAmp tree.amp_out = myOptimalFilter.amp_estimator.max() tree.amp_out_maxtime = myOptimalFilter.amp_estimator.argmax() tree.Fill() counter += 1 if counter == numEvents: break tree.write() rootFileOut.close()
#generate a trace - but randomStart = _pulseStartTime + random.uniform(-10, 80) #smear the start time simpulse.setpar(0, randomStart ) simsignal = simnoise + simpulse for i in range(len(simsignal)): trace[i] = int(simsignal[i]) pRaw.SetTrace(trace) optkamper = cham.GetOptimalKamper(pRaw) optkamper.SetIonPulseStartTime(0.0); optkamper.SetUseMinimizer(False) #don't look for the minimum of chi**2 optkamper.MakeKamp(pRaw) resultsMap = optkamper.GetResults() tree.amp_in = anAmp tree.amp_out = resultsMap['amp'].fValue tree.amp_out_maxtime = resultsMap['peakPosition'].fValue tree.Fill() counter += 1 if counter == numEvents: break tree.write() rootFileOut.close()