PhysicsAnalysis

Introduction

"tbonline/tbmon" reads in tbtrack files

Installation

In order to install tboline please checkout the code from the git repository at
/afs/e4.physik.uni-dortmund.de/group/atlas-pixel/sw/testbeam/tbonline.git

The main branch with the currently valid and agreed version is located on the PPS branch. Newly developed code segments should be kept in the private branches (locally or in the main repository) and merged into PPS_experimental as soon as it works and is preliminary approved and agreed on.

First steps

Overview of currently possible analysis and description of their outputs

Analysis types

raw hitmaps

raw ToT

  • mean
  • MPV (maximum bin)
  • probably fitted later on

in-time / off-time

  • LV1 cut
  • pedestal noise (opposite of LV1 cut)

read in masks

  • ToT of selected pixels only

clustering

  • cluster size
  • cluster length, width, area

hit efficiency over hole device

  • (clustered)

(hit efficiency with sub-pixel resolution)

  • superposition of same pixels
  • for irradiated and slim edge sensors

collected (clustered) charge over hole device

collected charge with sub-pixel resolution

  • NOT clustered charge

-- TobiasWittig - 03 Aug 2010

Analysis doc

qEfficiency

  • Produces lots of plots of charge distributions, largely documented in code (qEfficiency.h)
  • Modifications:
    • command line matched/unmatched/all cluster switch
      • usage: -P:A_qEfficiency_cluster [all/matched/unmatched]
      • default: matched, as per unmodified analysis
    • "reflected" coordinates to correctly overlay all pixels with the same bias grid orientation

qShare2D

  • Produces one histogram of all matched tracks, one histogram of tracks where the corresponding and a neighbouring pixel both fired, and outputs of the division of the two
  • Histograms only for central region using 800 * 100 µm overlayed coordinates
  • More thoroughly documented in source (qShare2D.h/qShare2D.cc)
  • Modifications:
    • added histograms of charge seen by the directly hit pixel and the ratio of this to the entire matched cluster charge

Analysis options in PPS_experimental

Eventbuilders

  • MaskAndLvl1:
    • A modification of PixelMasker, that in addition only allows hits for the event objects that have the corresponding lvl1 values
    • Lvl1 values read in from command line. Usage: -P:B_maskandlvl1_lvl1values "4 5 11" to allow only lv1 = 4,5 or 11 hits
  • ToTCalibReader:
    • reads in .cal.out files and stores the charge conversion in a specially made E4ToTCalib class, inheriting from ToTCalib, which is redefined as an abstract class
    • usage: -P:B_totcalibreader calibs/ToT_CLOW[...].cal.out
  • ClusterDumper:
    • deletes all clusters not of a certain size in the event objects
    • usage: -P:B_clusterdumper "2 3" to keep clusters of 2 and 3 hit pixel size
    • not very efficient as tbmon has to be run several times for separate cluster size results
  • MaskReader:
    • reads in maskfile paths from the command line
    • usage: -P:B_maskreader_[i] maskfiles/[...].txt reads in a maskfile for DUT iden i

Analyses (plots in italics not included in ROOT file output)

Efficiency

Regards central region of DUT

  • tracks: all (fTrack==kGood) tracks passing through the central region of DUT

efficiency2-tracks.png
  • hitsany: all hits seen by DUT for these tracks

efficiency2-hitsany.png
  • hits: the positions of all tracks with a matched cluster

efficiency2-hits.png
  • effmap: hits / tracks

efficiency2-effmap.png
  • hitspixel: same as hits except using subpixel resolution with all pixels overlayed
  • trackspixel: same as tracks except using subpixel resolution with all pixels overlayed
  • effpixelmap: hitspixel / trackspixel

efficiency2-effpixelmap.png
  • effpixelbiasmap: hangover from original efficiency coord system, not used
  • effpixelreadoutmap: hangover from original efficiency coord system, not used

EdgeEfficiency

All plots use own overlaid coordinates with subpixel resolution; uses own matching condition

Considers only events with track x coordinate in range (-800,400 um) and (6400,7800 um).

  • chargeScatterFolded: 3D histogram with (x track coord, y track coord, total cluster charge) for matched clusters

edgeefficiency-chargeScatterFolded.png
  • chargeProfileFolded: the 2D projection of chargeScatterFolded (taking the mean charge value for each x,y bin)

edgeefficiency-chargeProfileFolded.png
  • chargeprofX: 1D profile: chargeScatterFolded with y axis projected out and mean and error in mean of z (charge) axis displayed

edgeefficiency-chargeprofX.png
  • landauprofilewhole: landau profile fitted to projection along x axis of charge dist

edgeefficiency-landauprofilewhole.png
  • hitsanyedge: the only plot without subpixel resolution, plots pixel (row,col) coords of all hits in event

edgeefficiency-hitsanyedge.png
  • hitspixeledge: track positions of all matched clusters

edgeefficiency-hitspixeledge.png
  • trackspixeledge: positions of all tracks in edge region

edgeefficiency-trackspixeledge.png
  • effpixelmapedge: hitspixeledge/trackspixeledge

edgeefficiency-effpixelmapedge.png

qEfficiency

Central region of DUT

Includes command line switch to regard either matched clusters or unmatched clusters or all clusters

Usage: -P:A_qEfficiency_cluster [all/matched/unmatched]

  • chargeScatter: 3D histogram with (x track coord, y track coord, total cluster charge) with subpixel resolution, pixels overlaid

qefficiency-chargeScatter.png
  • chargeProfile: the 2D projection of chargeScatter (taking the mean charge value for each x,y bin)

qefficiency-chargeProfile.png
  • chargeProject: the 2D projection of chargeScatter (x coord against charge value)

qefficiency-chargeProject.png
  • chargeProfile_all: the mean charge value and its error against x position

qefficiency-chargeProfile_all.png
  • chargeLandaufitProfile: the landau MPV and its error against x position

qefficiency-chargeLandaufitProfile.png
  • chargeSliceBias_profile: the mean charge value and its error against x position, considering only 10um strip on border of two pixels

qefficiency-chargeSliceBias_profile.png
  • chargeSliceReadout_profile: the mean charge value and its error against x position, considering only 10um strip in middle of pixel

qefficiency-chargeSliceReadout_profile.png

  • tot[...]: the same as the corresponding charge[...] plot, only with total tot for the cluster, instead of charge

qShare2D

Central region of DUT

Matched clusters with 1 - 4 hits inclusive

Uses 2 * 2 pixel size overlaid coordinate system

  • h_n0: Coords of tracks (satisfying the above)

qshare2d-h_n0.png
  • h_n2: Coords of tracks with a hit in the pixel through which the particle passed and any adjacent (including diagonally adjacent) pixel

qshare2d-h_n2.png
qshare2d-ChargeSharing2D.png
  • chargeDirect: 3D charge scatter (x track coord, y track coord, charge seen by pixel through which the particle passed)

qshare2d-chargeDirect.png
  • chargeShareScatter: 3D scatter (x track coord, y track coord, charge seen by pixel through which the particle passed / total cluster charge)

qshare2d-chargeShareScatter.png
  • directChargeProfile: 2D (x,y) projection of chargeDirect with mean charge value

qshare2d-directChargeProfile.png
  • sharedChargeProfile: 2D (x,y) projection of charegShareScatter with mean ratio value

qshare2d-sharedChargeProfile.png

Sumtot

Any plot with q suffix does the same except with charge instead of ToT

  • fullChip: Sum of ToT over all hits anywhere in chip

sumtot-fullChip.png
  • maxClusterToT: ToT distribution of clusters with largest ToT sum in each event only in central region

sumtot-maxClusterToT.png
  • maxToT: largest ToT value of a hit pixel in each event anywhere in chip

sumtot-maxTot.png
  • clusterToT: sum of ToT over hits in any matched cluster with all hits in central region

sumtot-clusterToT.png
  • mapClusterToT: map of sum of ToT over hits in any matched cluster with all hits in central region, binned with ETA corrected row and col values

sumtot-mapClusterToT.png
  • any plot with "Elec": not PPS pixel design!!

  • clusterq_size[x]: charge dist for matched clusters with all hits in central region of size x

EdgeEfficiencyShift

Uses special coordinates to overlay eight middle pixels of sets of 10 equally shifted edge pixels

Uses own matching condition

Folded implies left and right edge regions overlaid.

Left and right regions individually use coordinate system of EUTelescope

  • chargeScatter[Folded/Right]: 3D histogram with (x track coord, y track coord, total cluster charge) with subpixel resolution, pixels overlaid

eeffshift-chargeScatterFolded.png
  • chargeProfile[Folded/Right]: TProfile2D with mean of charge values entries for each (x,y) bin

eeffshift-chargeProfileFolded.png
  • trackoverlay: the coordinates of all tracks passing through the edge region (left and right sides)

eeffshift-trackoverlay.png
  • hitoverlay: the coordinates of all tracks with a matched cluster passing through the edge region (left and right sides)

eeffshift-hitoverlay.png
  • effoverlay: hitoverlay/trackoverlay

eeffshift-effoverlay.png
  • righttrackoverlay/righthitoverlay/righteffoverlay: same for right side only

  • righttrackspixeledge/righthitspixeledge/righteffpixeledge: same but for right side only and with no overlaying of pixels

  • lefttrackspixeledge/lefthitspixeledge/lefteffpixeledge: same but for left side only and with no overlaying of pixels

  • chargeSliceSet[x]: the mean and its error in charge distribution against x position (left and right sides) for rows x*10+1 to x*10+8 inclusive

eeffshift-chargesliceset6.png
  • landauSliceSet[x]: the ROOT landau fit of charge distribution against x position (left and right sides) for rows x*10+1 to x*10+8 inclusive

eeffshift-landausliceset6.png

ClusterChecker
  • clusterSize: Dist of sizes of all clusters

clusterchecker-clusterSize.png
  • pixelhits: Dist of number of all hits

clusterchecker-pixelhits.png
  • multiplicity: Dist of number of clusters per event

clusterchecker-multiplicity.png

Gimmicks on the side

cleanUpMod.C
  • autoCleanUp(const TFile* f, string histoname = "edgeefficiencyshift_12_chargeScatterFolded;1", int ent_limit = 1)
    • fetches 3D charge scatter histogram name histoname out of TFile f and projects the mean of the charge axis into the x and y bins of a TProfile2D, omitting the x,y bins which have less than or equal to ent_limit entries on the charge axis
  • cleanUp(const TH3D& chargeScatter, int ent_limit = 1)
    • same as above, but must provide a reference to the 3D histogram oneself

maskmaker.C

Load and compile into ROOT and produce a new MaskMaker instance with an existing (empty, if necessary) maskfile. Can turn on and off rows, columns, single pixels, rectangles of pixels. Outputs to file in human readable (rectangle of 1s and 0s) or tbmon (list of col:row of masked out pixels) format.

shiftedbox_gr.C

Overlays HV pad, guard rings, cutting edge and pixel boundaries on a "folded" plot from edgeefficiencyshift

shiftedbox_gr11_oppi.C

Overlays HV pad, guard rings, cutting edge and pixel boundary on a "folded" plot from edgeefficiency

tbmon.zargo

A ArgoUML (an open source program runable with Java Web Start) file with a class diagram of the tbmon software. Possibly makes things more transparent, depending on the beholder

Development

Proposed changes and extensions

  • write-out of detailed clustering and timing information in tbtracktuplewriter (eutelescope): tbtrack file version 1.0 --> 1.1

Pre-inclusion stage of changes and extensions (PPS_experimental branch)

*

Included changes and extensions (PPS branch)

Documentation effort

Introduced Doxygen support (make docs) replacing texinfo. Up to now only a part of the code is documented with doxygen compatible code.

Program control overview

main() (driver.cc)

  • parseArgs() pass command line params to newly created TBConfig instance (config)
  • siteConfig() overwrite configuration in config with anything already determined in siteconfig.h
  • eudetjuly2010() make necessary EventBuilders and attribute to config. eudetjuly2010 EventBuilders in order in list:
  • [NOTE: CheckRegion and EuBuildTrack have been provisionally swapped in the list]
  • load DUT instances into config.dutlist
  • create an analysis instance for each specified analysis type and for each DUT (via function allAnalyses), store them in config.analyses
  • config.loop()

config.loop()

  • call eventbuilder initialise functions
  • call analysis initialise functions
  • allocate space for events
  • create Looper instance (looper)
  • create output TFile
  • looper.loop()

looper.loop()

  • load in list of runs
  • for each run:
    • set datapaths in config
    • initRun()
    • eventLoop()
    • finalizeRun()

looper.initRun()

  • run initRun() for all DUTs
  • run initRun() for all Eventbuilders
  • run initRun() for all Analyses

looper.eventLoop()

  • for each event ID number, temporarily stored in config.currentEntry, run [looper.]event():
    • config.buildEvent()
    • run analysis.event() for all Analyses

config.buildEvent()

looper.finalizeRun()

  • run finalizeRun() in each Analysis
  • run finalizeRun() in each EventBuilder

EventBuilders

CheckRegion

  • buildEvent(): set numerous flags for Event depending on the track's location etc.

Translator (not in use presently)

  • initRun(): load in translations stored for the individual DUTs
  • buildEvent(): translate event.trackX/trackY by the translation belonging to the DUT of the event in question

ClusterFinder

  • buildEvent(): run cluster finding algorithm (naturally)

EuBuildTrack

  • Important! Reads in data from tbtrack class (at the moment only zspix and eutracks branches)

PixelMasker

  • transfers hits from rawHits list to hits, according to the mask of the DUT

Event flags

A list of all the flags pertaining to an Event object and the (rough) code lines where they are potentially set. A block of several close lines may be referenced only once. Bracketed () references mean not included in the current list of eventbuilders in config.

Please note: the meanings of some of these flags are also documented in event.h and tbmon.info

  • fBase - event.h 77; (BAT 39) - guaranteed kGood if setEvent called
  • fClusters - CLUSTF 23 - guaranteed kGood in buildEvent of ClusterFinder
  • fTrack - event.h 78; EUBT 160; (CHI2 13); (BAT 36); (ANGLE 55,59) - by default kGood, unless fewer matched hits are found than m_nMatch EuBuildTrack param (set in our driver.cc as 1)
  • fTrackChi2 - (CHI2 12)
  • fTrackAngle - (ANGLE 43,51,54,58)
  • fHits - completely redundant, neither set nor used
  • fTrackCentralRegion - CREG 18,20 - kBad if track passes through pixel inside border specified by event::skipCols, event::skipRows (hard coded as 2 and 16 respectively)
  • fTrackMaskedRegion - CREG 9,29 - kBad if the track matches (within 1.5 * pitch dimensions) a pixel which is masked out by DUT mask
  • fTrackRegion - CREG 21,30,35 - kBad if fTrackMaskedRegion or fTrackCentralRegion kBad
  • fTrackMatchNeighbour - EUBT 160 - same as fTrack
  • fEtaCorrections - CLUSTF 24
  • fDutSync - (DUTSYNC 56,59,64)
  • fSimSync - (SIMBASE 81,98)
  • fEtaCut - (ETACUT 43 *******due to a presumed error line 46, the flag is never set kGood********)

Key:

  • ANGLE: anglecuts.cc
  • BAT: battrack.cc
  • CHI2: chi2builder.cc
  • CLUSTF: clusterfinder.cc
  • CREG: checkregion.cc
  • DUTSYNC: dutsync.cc
  • ETACUT: etaCutter.cc
  • EUBT: eubuildtrack.cc
  • SIMBASE: simBaseBuilder.cc

tbtrack file format

tbtrack files are standard root files which contain three trees. They are written in Eutelescope/src/EUTelAPIXTbTrackTuple.cc.
  • zspix
    • nPixHits: number of hits in each event (size of the vectors col, row, tot, lv1, iden, chip for each event)
    • euEvt: event ID (continuously assigned within a run)
    • col: column of a pixel hit
    • row: row of a pixel hit
    • tot: ToT value of the pixel hit
    • lv1: level1 trigger ID (time when the hit was seen)
    • iden: sensor ID (plane) starting with #10 (MCC channel number + 10) in order to avoid confusion with the Mimosa-planes (#<10)
    • chip: MCC channel number
  • eutracks
    • nTrackParams: hit ID (continuously assigned within a run)
    • euEvt: event ID (continuously assigned within a run)
    • xPos: x position of track space point on the DUT
    • yPos: y position of track space point on the DUT
    • dxdz: fittrack->getOmega()
    • dydz: fittrack->getPhi()
    • trackNum: track ID unique for all tracks of one event
    • iden: sensor ID (plane) starting with #10 (MCC channel number + 10) in order to avoid confusion with the Mimosa-planes (#<10)
    • chi2: chi2
    • ndof: number of degree of freedom
  • euclusters
    • euEvt: event ID (continuously assigned within a run)
    • size: apixCluster->size() or telCluster->size()
    • sizeX: getClusterSize(sizeX, sizeY)
    • sizeY: getClusterSize(sizeX, sizeY)
    • posX: getCenterCoord(posX, posY)
    • posY: getCenterCoord(posX, posY)
    • charge: apixCluster->getTotalCharge() or telCluster->getTotalCharge()
    • iden: sensor-ID (plane) starting with #10 (MCC channel number + 10) in order to avoid confusion with the Mimosa-planes (#<10)


Major updates:
-- AndreRummler - 15-Aug-2010

Responsible: AndreRummler
Last reviewed by: Never reviewed

Topic revision: r5 - 31-Aug-2010 - 16:18:18 - AndreRummler
 

  • Atlas All webs
 
This site is powered by the TWiki collaboration platformCopyright &© by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback