tpc flash adc simulation/reconstruction in marlin …dpp/linear_collider/...ion.generate charge...
TRANSCRIPT
![Page 1: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/1.jpg)
TPC Flash ADC Simulation/ReconstructionIn Marlin and LCIO
Jim Huntand Dan Peterson
Cornell University
LCWS: May 2007
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 1 / 25
![Page 2: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/2.jpg)
What Are We Trying To Do?
Charged Particle Track (From Mokka)
SimTrackerHit SimTrackerHit SimTrackerHit
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 2 / 25
![Page 3: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/3.jpg)
What Are We Trying To Do?
Charged Particle Track (From Mokka)
SimTrackerHit SimTrackerHit SimTrackerHit
Reconstructed Hit Reconstructed Hit Reconstructed Hit
? ? ?
Question: Can We Directly Make Reconstructed Hits?
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 2 / 25
![Page 4: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/4.jpg)
What Are We Trying To Do?
Charged Particle Track (From Mokka)
SimTrackerHit SimTrackerHit SimTrackerHit
No! TPCs Have Pads!
TPC Hits are not one-to-one with Reconstructed Hits.
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 2 / 25
![Page 5: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/5.jpg)
What Are We Trying To Do?
Charged Particle Track (From Mokka)
SimTrackerHit SimTrackerHit SimTrackerHit
No! TPCs Have Pads!
TPC Hits are not one-to-one with Reconstructed Hits.
(Silicon Hits are closer to one-to-one with Reconstructed Hits)
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 2 / 25
![Page 6: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/6.jpg)
What Are We Trying To Do?
Charged Particle Track (From Mokka)
SimTrackerHit SimTrackerHit SimTrackerHit
Pad Pad Pad Pad
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 2 / 25
![Page 7: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/7.jpg)
What Are We Trying To Do?
Charged Particle Track (From Mokka)
SimTrackerHit SimTrackerHit SimTrackerHit
Pad Pad Pad Pad
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 2 / 25
![Page 8: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/8.jpg)
What Are We Trying To Do?
Charged Particle Track (From Mokka)
SimTrackerHit SimTrackerHit SimTrackerHit
Pad Pad Pad Pad
Reconstructed Hit Reconstructed Hit Reconstructed Hit
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 2 / 25
![Page 9: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/9.jpg)
What Are We Trying To Do?
Charged Particle Track (From Mokka)
SimTrackerHit SimTrackerHit SimTrackerHit
Pad Pad Pad Pad
Reconstructed Hit Reconstructed Hit Reconstructed Hit
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 2 / 25
![Page 10: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/10.jpg)
What Are We Trying To Do?
Charged Particle Track (From Mokka)
SimTrackerHit SimTrackerHit SimTrackerHit
Pad Pad Pad Pad
Reconstructed Hit Reconstructed Hit Reconstructed Hit
Goal: Simulate this structure in Marlin.
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 2 / 25
![Page 11: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/11.jpg)
Custom LCIO Objects: IonizationCenters and ChargedPads
Charged Particle Track (From Mokka)
SimTrackerHit SimTrackerHit SimTrackerHit
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 3 / 25
![Page 12: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/12.jpg)
Custom LCIO Objects: IonizationCenters and ChargedPads
Charged Particle Track (From Mokka)
SimTrackerHit SimTrackerHit SimTrackerHit
IonizationCenter IonizationCenter IonizationCenter
New Custom LCIO Object: IonizationCenter
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 3 / 25
![Page 13: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/13.jpg)
Custom LCIO Objects: IonizationCenters and ChargedPads
Charged Particle Track (From Mokka)
SimTrackerHit SimTrackerHit SimTrackerHit
IonizationCenter IonizationCenter IonizationCenter
ChargedPad ChargedPad ChargedPad ChargedPad
New Custom LCIO Object: ChargedPad
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 3 / 25
![Page 14: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/14.jpg)
Custom LCIO Objects: IonizationCenters and ChargedPads
Charged Particle Track (From Mokka)
SimTrackerHit SimTrackerHit SimTrackerHit
IonizationCenter IonizationCenter IonizationCenter
ChargedPad ChargedPad ChargedPad ChargedPad
IonizationCenters are One-To-One with SimTrackerHits
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 3 / 25
![Page 15: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/15.jpg)
Custom LCIO Objects: IonizationCenters and ChargedPads
Charged Particle Track (From Mokka)
SimTrackerHit SimTrackerHit SimTrackerHit
IonizationCenter IonizationCenter IonizationCenter
ChargedPad ChargedPad ChargedPad ChargedPad
IonizationCenters hold the One-To-Many Relationship.
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 3 / 25
![Page 16: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/16.jpg)
Custom LCIO Objects: IonizationCenters and ChargedPads
Charged Particle Track (From Mokka)
SimTrackerHit SimTrackerHit SimTrackerHit
IonizationCenter IonizationCenter IonizationCenter
ChargedPad ChargedPad ChargedPad ChargedPad
ChargedPads hold the Many-To-One Relationship.
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 3 / 25
![Page 17: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/17.jpg)
What’s in an IonizationCenter?
An IonizationCenter points back to the lcio::SimTrackerHitand holds an array of the ordered pairs (pad number,charge).
class IonizationCenter : public CustomLCIOObject {
...
class Charge {
...
PadNumber pad number;
double charge;
};
fast data structures::array<Charge> m charges;
SimTrackerHit m sim tracker hit;
}
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 4 / 25
![Page 18: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/18.jpg)
What’s in a ChargedPad?
A ChargedPad points to a PadGeometry::Pad (see laterslides), holds Flash ADC Values and holds a list ofIonizationCenters.
class ChargedPad : public CustomLCIOObject{
...
fast_data_structures::sllist<IonizationCenter*>
m ionization centers;
fast_data_structures::array<unsigned int> m adc values;
PadGeometry::Pad* m pad;
}
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 5 / 25
![Page 19: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/19.jpg)
The Algorithm
The Algorithm for creating IonizationCenters and ChargedPads inpseudo-code is:
for sim hit in SimTrackerHits
ion = new IonizationCenter
ion.set sim tracker hit(sim hit)
ion.generate the (pad number,charge) ordered pairs
for pad in Pads
charged pad = new ChargedPad
for ion in IonizationCenters
for pairs in ion
charged_pad = get_charged_pad(pair.pad_number)
charged_pad.add_ion(ion)
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 6 / 25
![Page 20: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/20.jpg)
ion.generate charge information
The user controls how charge is placed on pads with an
class IonizationCenterChargeDistribution {
virtual double get_max_xy_radius(Vector &ionization_center)=0;
virtual double get_relative_charge(Vector &ionization_center,
PadGeometry::Pad* pad )=0;
virtual double get_total_charge()=0;
};
The Algorithm in pseudo-code for each ion:
dist = get user defined charged distribution()
xy radius = dist.get max xy radius(ion.get xy())
pads = get pads near(ion.get xy(), xy radius)
total charge = 0
for pad in pads
charge = dist.get relative charge(ion.get xy(),pad)
total charge += charge
pad.charge = charge
scale correction = dist.get total charge()/total charge
for pad in pads
pad.charge *= scale correction
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 7 / 25
![Page 21: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/21.jpg)
ion.generate charge information
The user controls how charge is placed on pads with an
class IonizationCenterChargeDistribution {
virtual double get_max_xy_radius(Vector &ionization_center)=0;
virtual double get_relative_charge(Vector &ionization_center,
PadGeometry::Pad* pad )=0;
virtual double get_total_charge()=0;
};
The Algorithm in pseudo-code for each ion:
dist = get user defined charged distribution()
xy radius = dist.get max xy radius(ion.get xy())
pads = get pads near(ion.get xy(), xy radius)
total charge = 0
for pad in pads
charge = dist.get relative charge(ion.get xy(),pad)
total charge += charge
pad.charge = charge
scale correction = dist.get total charge()/total charge
for pad in pads
pad.charge *= scale correction
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 7 / 25
![Page 22: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/22.jpg)
ChargedPadViewer (charge on one pad)
IonizationCenter charge vs time.Below is an example of a highly populated pad (pad number 27584 from a
Kaon event).
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 8 / 25
![Page 23: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/23.jpg)
ChargedPadViewer (charge on one pad)
Generated Flash ADC values vs time(generated dynamically by looping over the ChargedPad’s IonizationCenters
and putting in an exponential decay)
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 8 / 25
![Page 24: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/24.jpg)
ChargedPadViewer (charge on one pad)
For the rest of the talk I’m going to show tools that allow the user to inspect
events. The point is to figure out what made the time structure for this pad.
All plots that follow are from this event.
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 8 / 25
![Page 25: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/25.jpg)
A New PadGeometry
We could not use
The GEometry Api for Reconstruction package
for Pad Geometry because it lacked the crucialget pads near(xy,xy radius) method.1
So instead I wrote a new PadGeometry package
that is based on arbitrarily placed convex polygons,
and optimized for speed by using aggressively inlined customdata structures.
1the closest match was PadRowLayout2D::getNearestPadJim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 9 / 25
![Page 26: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/26.jpg)
A New PadGeometry
We could not use
The GEometry Api for Reconstruction package
for Pad Geometry because it lacked the crucialget pads near(xy,xy radius) method.1
So instead I wrote a new PadGeometry package
that is based on arbitrarily placed convex polygons,
and optimized for speed by using aggressively inlined customdata structures.
1the closest match was PadRowLayout2D::getNearestPadJim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 9 / 25
![Page 27: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/27.jpg)
PadGeometry Details
Here’s our 2D event display:
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 10 / 25
![Page 28: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/28.jpg)
PadGeometry Details
With Tracks From an Event (SimTrackerHits are red):
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 10 / 25
![Page 29: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/29.jpg)
PadGeometry Details
The intensity of the yellow color scales with integrated charge on each pad:
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 10 / 25
![Page 30: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/30.jpg)
PadGeometry Details
Now zoom in :
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 10 / 25
![Page 31: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/31.jpg)
PadGeometry Details
With integrated charged coloring:
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 10 / 25
![Page 32: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/32.jpg)
PadGeometry Details
How does this package work? For example, suppose you want to project chargefrom and IonizationCenter at z = 0 to the position of the mouse:
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 10 / 25
![Page 33: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/33.jpg)
PadGeometry Details
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 10 / 25
![Page 34: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/34.jpg)
PadGeometry Details
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 10 / 25
![Page 35: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/35.jpg)
PadGeometry Details
A simpler example is how the package finds the pad at some xy-location:
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 10 / 25
![Page 36: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/36.jpg)
PadGeometry Details
It has an xy-grid index:
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 10 / 25
![Page 37: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/37.jpg)
PadGeometry Details
And scans pads within one grid spacing:
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 10 / 25
![Page 38: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/38.jpg)
PadGeometry Details
Here’s the pad whose flash adc was displayed earlier:
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 10 / 25
![Page 39: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/39.jpg)
A Transition...
That was a new 2D EventDisplay.
But for good diagnostics we really need 3D ...
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 11 / 25
![Page 40: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/40.jpg)
Run the new tpc python program:
~/tpc tracking> tpc
A TPC Tracking Environment
http://www.lns.cornell.edu/~jmh263/tpc
tpc version: trunk (svnversion: 195M)
select an lcio file from the list:
[1] kaon example.slcio
enter # 1
opening ~/tpc tracking/data files/kaon example.slcio ...
executing ~/tpc tracking/data files/kaon example.py ...
tpc python>
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 12 / 25
![Page 41: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/41.jpg)
The 3D EventDisplay
tpc python> e=tpc.create event display()
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 13 / 25
![Page 42: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/42.jpg)
The 3D EventDisplay
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 13 / 25
![Page 43: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/43.jpg)
The 3D EventDisplay
tpc python> tpc.event.read lcevent from file()
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 13 / 25
![Page 44: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/44.jpg)
The 3D EventDisplay
Now tracks with labels are visible:
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 13 / 25
![Page 45: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/45.jpg)
The 3D EventDisplay
Put charge on the pads:
tpc python> tpc.event.ionization centers.create()
tpc python> tpc.event.ionization centers.generate charge information()
tpc python> tpc.event.charged pads.create()
tpc python> tpc.event.ionization centers.put charge on pads()
tpc python> tpc.event.refresh gui()
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 13 / 25
![Page 46: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/46.jpg)
The 3D EventDisplay
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 13 / 25
![Page 47: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/47.jpg)
The 3D EventDisplay
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 13 / 25
![Page 48: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/48.jpg)
The 3D EventDisplay
Now highlight the Many-To-One Relationship betweenIonizationCenters and one Pad.
tpc python> e.set current charged pad(
... tpc.event.charged pads.get charged pad(27584))
tpc python> tpc.event.refresh gui()
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 13 / 25
![Page 49: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/49.jpg)
The 3D EventDisplay
Many-To-One
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 13 / 25
![Page 50: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/50.jpg)
The 3D EventDisplay
Another example: highlight theIonizationCenters-To-ChargedPads relationships for one
Track.
tpc python> positron=tpc.event.mc_particles.get_particle(7)
tpc python> track=tpc.event.sim_tracks.get_track(positron)
tpc python> e.set_current_sim_track(track)
tpc python> tpc.event.refresh_gui()
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 13 / 25
![Page 51: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/51.jpg)
The 3D EventDisplay
IonizationCenters-To-ChargedPads (Many-To-Many) for one Track
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 13 / 25
![Page 52: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/52.jpg)
The 3D EventDisplay
And the One-To-Many relationship between OneIonizationCenter and Many ChargedPads:
tpc python> tpc.event.ionization_centers.get_nionization_centers()
19104
tpc python> e.set_current_ionization_center(
... tpc.event.ionization_centers.get_ionization_center(19000))
tpc python> tpc.event.refresh gui()
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 13 / 25
![Page 53: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/53.jpg)
The 3D EventDisplay
One-To-Many.
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 13 / 25
![Page 54: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/54.jpg)
The 3D EventDisplay
other views
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 13 / 25
![Page 55: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/55.jpg)
The 3D EventDisplay
other views
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 13 / 25
![Page 56: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/56.jpg)
So what’s in the event?
tpc python> tpc.event.mc_particles.get_particle(1).print_decays(True)
K+ -> pi0 nu_mu mu+ e- e-
pi0 -> gamma gamma
mu+ -> e+ nu_e nu_mu~
e+ -> gamma
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 14 / 25
![Page 57: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/57.jpg)
So what’s in the event?
tpc python> tpc.event.mc_particles.get_particle(1).print_decays(True)
K+ -> pi0 nu_mu mu+ e- e-
pi0 -> gamma gamma
mu+ -> e+ nu_e nu_mu~
e+ -> gamma
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 14 / 25
![Page 58: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/58.jpg)
So what’s in the event?
tpc python> tpc.event.mc_particles.get_particle(1).print_decays(True)
K+ -> pi0 nu_mu mu+ e- e-
pi0 -> gamma gamma
mu+ -> e+ nu_e nu_mu~
e+ -> gamma
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 14 / 25
![Page 59: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/59.jpg)
The Marlin Interface: PutChargeOnPadsProcessor
Here is our working example of a Marlin Processor.CustomMarlinProcessor is a thin wrapper around marlin::Processor.
class PutChargeOnPadsProcessor :
public tpc_tracking::CustomMarlinProcessor {
CUSTOM_MARLIN_PROCESSOR_IMPL(PutChargeOnPadsProcessor)
public:
void processEvent(lcio::LCEvent *lc_event);
// etc...
};
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 15 / 25
![Page 60: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/60.jpg)
The Marlin Interface: PutChargeOnPadsProcessor
The user no longer has to supply a newProcessor() call.
Event::Sync synchronizes lcio::LCEvent withtpc tracking::Event.
void PutChargeOnPadsProcessor::processEvent(lcio::LCEvent *lc_event) {
using tpc_tracking::Event;
using tpc_tracking::globals::event;
Event::Sync sync(lc event);
event->ionization_centers.create();
event->charged_pads.create();
event->ionization_centers.generate_charge_information();
event->ionization_centers.put_charge_on_pads();
}
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 15 / 25
![Page 61: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/61.jpg)
Conclusions
We now have
a new Event Display (3D and 2D),
a new PadGeometry package,
a mechanism to add custom objects to LCIO2
marlin processors that move charge from IonizationCenters toChargedPads,
and a python interface that glues everything together.
2for details see http://www.lns.cornell.edu/∼jmh263/tpcJim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 16 / 25
![Page 62: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/62.jpg)
Conclusions
Future plans:
Allow the user to control the amplifier characteristics(Polymorphism).
Implement Flash ADC Time Reconstruction and store theresult in LCIO (Probably a CustomLCIOObject).
Plan how to integrate this project into theMarlin/MarlinTPC/LCIO/GEAR code base.
2for details see http://www.lns.cornell.edu/∼jmh263/tpc
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 16 / 25
![Page 63: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/63.jpg)
Conclusions
For Details, Tutorials, and More visit
http://www.lns.cornell.edu/∼jmh263/tpc
2for details see http://www.lns.cornell.edu/∼jmh263/tpc
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 16 / 25
![Page 64: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/64.jpg)
Extra Slides
Extra Slides
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 17 / 25
![Page 65: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/65.jpg)
An Object Hierarchy
tpc.event is a wrapper around lcio::LCEvent.
namespace tpc_tracking {
class Event {
lcio::LCEvent *m_lc_current_event;
};
}
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 18 / 25
![Page 66: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/66.jpg)
An Object Hierarchy
tpc.event.*s objects represent Collections.
the collections hold objects that may wrap lcio objects.
namespace tpc_tracking {
class MCParticle; // lcio::MCParticle
class SimTrackerHit; // lcio::SimTrackerHit
class SimTrack; // [ uses tpc_tracking::SimTrackerHit ]
class IonizationCenters; // custom lcio object
class ChargedPads; // custom lcio object
class Event {
MCParticles mc_particles
SimTrackerHits sim_tracker_hits
SimTracks sim_tracks;
IonizationCenters ionization_centers;
ChargePads charged_pads;
};
};
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 18 / 25
![Page 67: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/67.jpg)
An Object Hierarchy
light-weight object:
namespace tpc_tracking {
class MCParticle {
lcio::MCParticle* m_pMCParticle;
};
}
heavy-weight object:
namespace tpc_tracking {
class SimTrack {
std::vector<SimTrackerHitNumber> m_sim_tracker_hits;
};
}
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 18 / 25
![Page 68: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/68.jpg)
EventObject and CustomLCIOCollection<T>
EventObject
SimTracks CustomLCIOCollection<T>
MCParticles
SimTrackerHits IonizationCenters ChargedPads
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 19 / 25
![Page 69: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/69.jpg)
EventObject and CustomLCIOCollection<T>
namespace tpc_tracking {
// LCIO Collections:
class EventObject;
class SimTracks : public EventObject;
template<typename T>
class CustomLCIOCollection<T> : public EventObject;
class MCParticles : public CustomLCIOCollection<MCParticle>;
class SimTrackerHits : public CustomLCIOCollection<SimTrackerHit>;
class IonizationCenters:public CustomLCIOCollection<IonizationCenter>;
class ChargedPads : public CustomLCIOCollection<ChargedPad>;
};
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 20 / 25
![Page 70: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/70.jpg)
CustomLCIOObject: lcio::SimTrackerHits details
lcrtrel::LCRTRelations
LCEEVENT::LCObject
EVENT::SimTrackerHit IMPL::AccessChecked
IMPL::SimTrackerHitImpl SIO::SIOObjectHandler
IOIMPL::SimTrackerHitIOImpl SIO::SIOSimTrackerHitHandler
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 21 / 25
![Page 71: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/71.jpg)
CustomLCIOObject: IonizationCenter.h
The preprocessor generates an SIOObjectHandler.
SIO is hidden in CustomLCIOObject::Stream.
namespace tpc_tracking {
class IonizationCenter : public CustomLCIOObject {
bool read(Stream &stream);bool write(Stream &stream);
};
DECLARE CUSTOM LCIO OBJECT(IonizationCenter);};
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 22 / 25
![Page 72: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/72.jpg)
CustomLCIOObject: IonizationCenter.cc
The preprocessor generates an SIOObjectHandler.SIO is hidden in CustomLCIOObject::Stream.
namespace tpc_tracking {
DEFINE CUSTOM LCIO OBJECT(IonizationCenter);bool IonizationCenter::read(Stream &stream){
stream >> m_sim_tracker_hit;
stream >> m_bGeneratedChargeInformation;
if (m_bGeneratedChargeInformation) {
stream >> m_charges;
}
return true;
}
bool IonizationCenter::write(Stream &stream){
stream << m_sim_tracker_hit;
stream << m_bGeneratedChargeInformation;
if (m_bGeneratedChargeInformation) {
stream << m_charges;
}
return true;
}
};
DECLARE CUSTOM LCIO OBJECT(IonizationCenter);};
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 23 / 25
![Page 73: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/73.jpg)
What happened to SIO PTR and SIO PTAG?
unsigned int CustomLCIOObject::read(SIO_stream* sio_stream)
{
Stream stream(sio_stream);
stream. declare pointer target(this) ;
if (read(stream))
return SIO_BLOCK_SUCCESS;
else
return SIO_BLOCK_NOTFOUND; // see FAQ in SIO manual;
}
unsigned int CustomLCIOObject::write(SIO_stream* sio_stream)
{
Stream stream(sio_stream);
stream. declare pointer target(this);if (write(stream))
return SIO_BLOCK_SUCCESS;
else
return SIO_BLOCK_NOTFOUND; // see FAQ in SIO manual;
}
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 24 / 25
![Page 74: TPC Flash ADC Simulation/Reconstruction In Marlin …dpp/linear_collider/...ion.generate charge information The user controls how charge is placed on pads with an class IonizationCenterChargeDistribution](https://reader034.vdocument.in/reader034/viewer/2022051801/5ad87d8b7f8b9a991b8d612d/html5/thumbnails/74.jpg)
Where is GEAR? What About General Setting?
As explained earlier, I did not use Gear.General Settings are stored in a Settings object.They are initialized at start-up; remember kaon example.py:
tpc.settings.set_tpc_sim_tracker_hits_collection_name(’tpc07_TPC’)
tpc.settings.set_tpc_half_length(2037.5);
tpc.settings.set_tpc_min_radius(371);
tpc.settings.set_tpc_max_radius(1516);
tpc.settings.set_time_start(0.25);
tpc.settings.set_time_per_bin(0.25);
tpc.settings.set_nbins(1000);
...
tpc.pad_geometry.create_circular_pattern2(10,10,0.9)
tpc.settings.
create_diffusion_ionization_center_charge_distribution(10000,20,30)
Jim Hunt (Cornell University) TPC Flash ADC Sim/Reco LCWS: May 2007 25 / 25