portia C++ API Reference

class I3Portia : public I3ConditionalModule
#include <I3Portia.h>

Public Functions

SET_LOGGER ("I3Portia")
I3Portia(const I3Context &ctx)

public constructor

virtual ~I3Portia()

public deconstructor

void Configure()

IceTray requirement

void Physics(I3FramePtr frame)

IceTray requirement

Public Static Functions

static bool MakeSplittedDOMMap(I3DOMLaunchSeriesMap &launchMap, I3MapKeyVectorDouble &launchTimeMap, const I3Geometry &geo, bool makeIceTopPulse = false)

Function to make the “launchTimeMap” I3Map<OMKey,std::vector<launch_time>> = I3Map<OMKey, launchTimeSeries>

static bool MakeLaunchTimeSeries(const I3DOMLaunchSeries &launches, std::vector<double> &launchTimeSeries)

Public Static Attributes

static double kStartTimeBtw_ = -4400.0 * I3Units::ns

The Basetime window parameters

static double kEndTimeBtw_ = 6400.0 * I3Units::ns

Private Functions

I3Portia()

default assigment and copy constructors declared priveate

I3Portia(const I3Portia&)
I3Portia &operator=(const I3Portia&)
bool MakeATWDPulses(double launchTimeOfThisDOM, const I3Waveform &wave, const I3DOMCalibration &calib, const I3DOMStatus &status, const I3Position &pos, I3PortiaPulse &portia)

Function to make PortiaPulse and RecoPulse on each DOM found from ATWD

bool MakeFADCPulses(double launchTimeOfThisDOM, const I3Waveform &wave, const I3DOMCalibration &calib, const I3DOMStatus &status, const I3Position &pos, I3PortiaPulse &portia)

Function to make PortiaPulse and RecoPulse on each DOM found from FADC

bool MakeBestPulses(const I3PortiaPulse &atwd_p, const I3Waveform &fadc_w, const I3PortiaPulse &fadc_p, const I3DOMCalibration &calib, I3PortiaPulse &best_p)

Function to make PortiaPulse and RecoPulse from both ATWD and FADC e.g. NPE from the ATWD time window

void MakePortiaEvent(I3MapKeyVectorDouble &launchTimeMap, I3PortiaPulseMapPtr atwd_portia, I3PortiaPulseMapPtr fadc_portia, I3PortiaEventPtr portia_event, bool baseTimeWindowEvent = false)

Function to make Portia Event from PortiaPulses

Private Members

std::string outATWDPulseSeriesName_
std::string outFADCPulseSeriesName_
std::string outATWDPortiaPulseName_
std::string outFADCPortiaPulseName_
std::string outPortiaEventName_
std::string outBestPortiaPulseName_
std::string inDataReadoutName_

input names

std::string inTopDataReadoutName_
std::string inTopATWDWaveformName_
std::string inATWDWaveformName_
std::string inFADCWaveformName_
std::string inDOMMapName_
bool includeHighQEDOMs_

Whether or not to include high QE DOMs in charge estimate. Typically the high-QE DOMs are removed through a cut on string 79-86, before the launch map reaches Portia. But there are a few high-QE DOMs on string 36 and 43 that get missed and are therefore included in the default L2 chain. This will give the option to exclude them from the charge calculation.

std::string optionATWDBaseLine_

baseline option

std::string optionFADCBaseLine_
bool readExternalDOMMap_

option concerning the (splitted) DOM map is read out instead of directly reading the DOM launch series map. This option is introduced in the p-frame split era to deal with SLOP frame.

bool makeBestPulse_

option which information FADC/ATWD and InIce/IceTop is used

bool makeIceTopPulse_
bool useFADC_
double pmtGain_

default pmt gain value (in case pmt gain from detector status is unavailable)

bool useFADCNoiseThreshold_

option to require FADC bins be above a noise threshold to be included in the FADC charge estimate

double FADCNoiseThreshold_
double atwdThresholdCharge_

A hit is considered to be a hit if its integrated charge is larger than this value

double fadcThresholdCharge_
double atwdThresholdLEAmp_

A LE time is considered to be the first bin which crosses this threshold

double fadcThresholdLEAmp_
double largestTime_

time of waveform with the largest NPE

bool foundLargestNPEDOM_
class I3PortiaEventOMKeyConverter : public I3ConditionalModule

a module to convert I3PortiaEvent to OMKey

copyright (C) 2004 the icecube collaboration

Public Functions

I3PortiaEventOMKeyConverter(const I3Context &ctx)

Constructor

~I3PortiaEventOMKeyConverter()

Destructor

void Configure()

This module takes a configuration parameter and so it must be configured

void Physics(I3FramePtr frame)

Private Functions

I3PortiaEventOMKeyConverter()
I3PortiaEventOMKeyConverter(const I3PortiaEventOMKeyConverter &source)
I3PortiaEventOMKeyConverter &operator=(const I3PortiaEventOMKeyConverter &source)
SET_LOGGER ("I3PortiaEventOMKeyConverter")

Private Members

std::string inputPortiaEvent_

Parameter: name of the input I3PortiaEvent to be converted into OMKey.

std::string outputOMKeyListName_

Parameter: name of the output OMKey converted from I3PortiaEvent

class I3PortiaSplitter : public I3ConditionalModule
#include <I3PortiaSplitter.h>

Public Functions

SET_LOGGER ("I3PortiaSplitter")
I3PortiaSplitter(const I3Context &ctx)

public constructor

virtual ~I3PortiaSplitter()

public deconstructor

void Configure()

IceTray requirement

void Physics(I3FramePtr frame)

IceTray requirement

Public Static Attributes

static double kTimeMargin_ = 100.0 * I3Units::ns

The Basetime window parameters

Private Functions

I3PortiaSplitter()

default assigment and copy constructors declared priveate

I3PortiaSplitter(const I3PortiaSplitter&)
I3PortiaSplitter &operator=(const I3PortiaSplitter&)
bool MakeSplittedDOMMap(const I3DOMLaunchSeriesMap &launchMap, I3MapKeyVectorDouble &splittedDOMMap, const I3Geometry &geo)

Function to make the “SplittedDOMMap” I3Map<OMKey,std::vector<launch_time>> = I3Map<OMKey, launchTimeSeries>

bool MakeLaunchTimeSeries(const I3DOMLaunchSeries &launches, std::vector<double> &launchTimeSeries)

Private Members

std::string outDOMMapName_
std::string inDataReadoutName_

input names

std::string inEventHeaderName_
std::string subEventStreamName_
std::string frameTimeWindowKeyName_
bool splitLaunchTime_

option to split series of launch time.

double frameStartTime_

if false, null split - every launch time goes to p-frame Start and end time of the trigger frame. All launches in [frameStartTime_, frameEndTime_] with kTimeMargin_ are bundled and thrown into a single p-frame. If splitLaunchTime_=false, every each of launches are bundled (i.e., null split)

double frameEndTime_
namespace std

STL namespace.

file I3Portia.cxx
#include “icetray/I3Tray.h”
#include “icetray/I3Frame.h”
#include “icetray/I3TrayHeaders.h”
#include “dataclasses/calibration/I3Calibration.h”
#include “dataclasses/status/I3DetectorStatus.h”
#include “dataclasses/geometry/I3Geometry.h”
#include “dataclasses/I3DOMFunctions.h”
#include “icetray/OMKey.h”
#include “icetray/I3Units.h”
#include “dataclasses/I3Position.h”
#include “dataclasses/physics/I3Waveform.h”
#include “portia/I3Portia.h
#include “recclasses/I3PortiaPulse.h”
#include “recclasses/I3PortiaEvent.h”
#include <numeric>

Functions

void print(double n)
void print_in_mv(double n)
double square_sum(double a, double b)
I3_MODULE(I3Portia)
file I3Portia.h
#include “icetray/I3ConditionalModule.h”
#include “dataclasses/physics/I3DOMLaunch.h”
#include “recclasses/I3PortiaPulse.h”
#include “recclasses/I3PortiaEvent.h”

I3Portia stands for IceCube PORTable Impulse Analyzer, adapted to the name of the beautiful lady in “The Merchant of Venice”.

Copyright (C) 2005 The IceCube collaboration $ID$

Version

Rcs

1.0.0

Date

Rcs

Feb. 21st, 2008

Author

Aya Ishihara aya.ishihara@icecube.wisc.edu I3Portia header file

file I3PortiaEventOMKeyConverter.cxx
#include “icetray/I3TrayHeaders.h”
#include “recclasses/I3PortiaEvent.h”
#include “dataclasses/I3Vector.h”
#include <iostream>

copyright (C) 2004 the icecube collaboration

Rcs

I3PortiaEventOMKeyConverter.cxx 19641 2006-05-10 14:03:22Z dule

Version

Rcs

1.7

Date

Rcs

2006-05-10 23:03:22 +0900 (水, 10 5月 2006)

Author

mase

Functions

I3_MODULE(I3PortiaEventOMKeyConverter)
file I3PortiaEventOMKeyConverter.h
#include “icetray/I3ConditionalModule.h”

Version

$Revision$

Date

$Date$

Author

mase

file I3PortiaSplitter.cxx
#include “icetray/I3Tray.h”
#include “icetray/I3Frame.h”
#include “icetray/I3TrayHeaders.h”
#include “dataclasses/physics/I3EventHeader.h”
#include “dataclasses/geometry/I3Geometry.h”
#include “dataclasses/I3Double.h”
#include “icetray/OMKey.h”
#include “icetray/I3Units.h”
#include <numeric>

Functions

I3_MODULE(I3PortiaSplitter)
file I3PortiaSplitter.h
#include “icetray/I3ConditionalModule.h”
#include “dataclasses/physics/I3DOMLaunch.h”
#include “dataclasses/I3Map.h”
#include “dataclasses/I3TimeWindow.h”

The p-frame splitter for I3Portia. This is for the L2 EHE process, mainly to extract events out of SLOP. All DOM launch time within the time frame provied by trigger-splitter is bundled and emitted to a single p-frame.

Copyright (C) 2005 The IceCube collaboration $ID$

Date

Rcs

July. 27th, 2012

Author

Shigeru Yoshida

file index.dox
dir icetray
dir portia
dir portia
dir portia
dir private
dir public
page index

Author

Aya Ishihara <aya @ icecube.wisc.edu>

Overview

 I3Portia filles classes of I3PortiaPulse and I3PortiaEvent

Portia loops over all the DOM launches and integrate ATWD and FADC waveform divided by a single charge. Output pulse information is stored in I3PortiaPulse class. I3PortiaPulse has a member of I3RecoPulse and basic information is filled in the class. Output NPEs from ATWD and FADC are compared dom-by-dom basis and whichever gives a larger value is summed up for the event-sum NPE value. These event-wise information is stored in I3PortiaEvent class. Main members are NPE from ATWD and FADC whichever gives larger value, ATWD based NPE sum, and FADC based NPE sum.

[What Portia does]

There is an option to make best pulse. The best pulse means that in addition to the ATWD based NPE, FADC based NPE obtaind after the ATWD time-window size is added. This is effective because ATWD time window is narrow but saturation point is high, while FADC time window is wide but saturation point is low.

[Making the best pulse]

If this option is chosen, the event-wise best NPE value is also calculated based on the sum of ATWD plus after-window FADC based NPEs.

There are the same set of baseline option for ATWD and FADC.

[Baseline estimation]

../doxygen/portia/xml/PortiaBaseline3.png

[All Parameter list]

All the parameters are in the standard IceTray units with I3Units.

structure

../doxygen/portia/xml/PortiaDiagram.png

param eheoptimized(default):

Described in the figure above.

param first:

The average of first 2 bins for ATWD and 3 bins for FADC.

param last:

The average of last 3 bins for ATWD and FADC.

param lower:

The average of the lowest 8 entries for ATWD and the lowest 16 entries for FADC.

param first_or_last:

Either first or last whichever gives lower value.

param iteration:

At first, take average of waveform. Select bin entries which are only below the average (called Waveform_reduced). Then calculate the average and RMS of the reduced entries which are below the average (called RMS_reduced, average_reduced). Scan the Waveform_reduced and remove bins of which values are larger than average_reduced + 1.5*RMS_reduced or are smaller than average_reduced - 1.5*RMS_reduced. Again calculate RMS and average with only updated reduced bins and repeat this processs for 10 times or until the number of entry become less than 30. Finally take the average of remained entry as the baseline. Fixed numbers, 1.5, 10 and 30 are from hardware single charge response study.

param zerobaseline:

Take 0mV as the baseline.

param DataReadoutName:

Input raw data I3DOMLaunch name (default CleanInIceRawData)

param OutPortiaEventName:

Out (default “PortiaEvent”)

param PMTGain:

default PMT gain value (default 1.e7). this number is used only when PMT Gain from I3DB is not reasonbale (i.e, N/A, 0 or 1)

param ATWDPulseSeriesName:

Output name for reco pulse from ATWD (default “ATWDPulseSeries”)

param ATWDPortiaPulseName:

Output name for portia pulse from ATWD (default “ATWDPortiaPulse”)

param ATWDWaveformName:

Input calibrated ATWD waveform name (default “CalibratedATWD”)

param ATWDBaseLineOption:

Baseline option, currently first,last,lower,first_or_last,iteration or eheoptimized are available (default “eheoptimized”). For details of each option, please see above.

param ATWDThresholdCharge:

Threshold charge above which an waveform is considered to be a pulse(default 0.1pC)

param ATWDLEThresholdAmplitude:

the time the waveform crosses this value is considered to be LE time (default 0.5mV)

param UseFADC:

if both ATWD and FADC are used (default True)

param FADCPulseSeriesName:

Output name for reco pulse from FADC (default “FADCPulseSereis”)

param FADCPortiaPulseName:

Output name for portia pulse from FADC (default “FADCPortiaPulse”)

param FADCWaveformName:

Input calibrated FADC waveform name (default FADC)

param FADCBaseLineOption:

Baseline option, currently first,last,lower,first_or_last,iteration or eheoptimized are available (default “eheoptimized”). For details of each option, please see above.

param FADCThresholdCharge:

Threshold charge above which an waveform is considered to be a pulse(default 0.1pC)

param FADCLEThresholdAmplitude:

the time the waveform crosses this value is considered to be LE time (default 0.5mV)

param MakeBestPulseSeries:

Select to do if best pulse is from both ATWD and FADC (default False)

param BestPortiaPulseName:

output best portia pulse in case MakeBestPulseSeries is true (default “BestPortiaPulse”)

param MakeIceTopPulse:

Select to make IceTop pulses(default False)

param TopDataReadoutName:IceTop:

DomLaunch name (default “CleanIceTopRawData”)

param inTopATWDWaveformName:Input:

IceTop waveform name (default “CalibratedIceTopATWD”)