More information on this package is here.
#include "TPartSieve.h"

TPartSieve


class description - header file - source file

class TPartSieve: public TObject

Inheritance Inherited Members Includes Libraries
Class Charts

Function Members (Methods)

Display options:
Show inherited
Show non-public
public:
TPartSieve()
TPartSieve(const TPartSieve&)
TPartSieve(TClasTool* clastool, Int_t runnum = 0)
virtual~TPartSieve()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual Float_tBetaBetaCut(Int_t Ind, Float_t mass, Float_t Wieght, Float_t MaxDiff)
virtual voidTObject::Browse(TBrowser* b)
virtual Float_tCC_Phe_Cut(Int_t Ind, Float_t WidthMultiply = 0.)
virtual Float_tCC_Phe_Cut(TEVNTClass* evnt, Float_t WidthMultiply = 0.)
virtual voidChangeID(Int_t Ind, Int_t ID)
Bool_tCheckSCPaddle(TSCPBClass* sc)
Bool_tCheckSCPaddle(Int_t secidcode)
Bool_tCheckSCPaddle(Int_t sector, Int_t paddle)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tTObject::Compare(const TObject* obj) const
virtual Float_tConfDeut(Int_t Ind)
virtual Float_tConfEl(Int_t Ind, Float_t W = 0.)
virtual Float_tConfHe3(Int_t Ind)
virtual Float_tConfHe4(Int_t Ind)
voidConfidenceOff()
voidConfidenceOn()
virtual Float_tConfKm(Int_t Ind)
virtual Float_tConfKp(Int_t Ind)
virtual Float_tConfNeut(Int_t Ind)
virtual Float_tConfPhot(Int_t Ind)
virtual Float_tConfPim(Int_t Ind)
virtual Float_tConfPip(Int_t Ind)
virtual Float_tConfPos(Int_t Ind)
virtual Float_tConfProt(Int_t Ind)
virtual Float_tConfUnknown(Int_t Ind)
virtual voidTObject::Copy(TObject& object) const
virtual Float_tCutConfMax(Float_t x, Float_t cut, Float_t width)
virtual Float_tCutConfMin(Float_t x, Float_t cut, Float_t width)
virtual voidTObject::Delete(Option_t* option = "")
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() const
virtual TObject*TObject::DrawClone(Option_t* option = "") const
virtual voidTObject::Dump() const
virtual Float_tEC_Eio_Cut(Int_t Ind, Float_t WidthMultiply = 0.)
virtual Float_tEC_Eio_Cut(TEVNTClass* evnt, Float_t WidthMultiply = 0.)
virtual Float_tECUVWCut(Int_t Ind, Float_t WidthMultiply = 0.)
virtual Float_tECUVWCut(TEVNTClass* evnt, Float_t WidthMultiply = 0.)
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
virtual Float_tGet_DC_Qual(Int_t Ind, Float_t Chi2, Float_t Width = 0.5)
Float_tGetBetaP(Float_t p, Int_t ipart)
Float_tGetConfFast(Int_t pid, Int_t num)
virtual Float_tGetDeltaT(Int_t Ind)
virtual Float_tGetDeltaT(TEVNTClass* evnt)
virtual Float_tGetDeltaT(TSCPBClass* sc, Float_t p, Int_t ipart)
virtual Float_tGetDeltaT_EC(TECPBClass* ec, Float_t p, Int_t ipart)
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
TEVNTClass*GetEVNTIdx(Int_t idx, Int_t num)
TEVNTClass*GetEVNTPid(Int_t pid, Int_t num)
virtual const char*TObject::GetIconName() const
Int_tGetIndexIdx(Int_t idx, Int_t num)
Int_tGetIndexPid(Int_t pid, Int_t num)
virtual const char*TObject::GetName() const
Int_tGetNIdx(Int_t idx)
Int_tGetNPid(Int_t pid)
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
Float_tGetPartConf(Int_t Ind)
virtual const char*TObject::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
TVERTClass*GetVert(Int_t PID1, Int_t num1, Int_t PID2, Int_t num2)
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::Hash() const
Int_tIDtoInd(Int_t PartId)
Int_tIDtoIndQuick()
voidIndexConf(Float_t conf, Int_t pid, Int_t num)
voidIndexPart(Int_t Ind, Float_t confidence = 1)
Int_tIndtoID(Int_t Ind)
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidTObject::Inspect() const
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTObject::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTObject::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual Float_tNoCCCut(Int_t Ind, Float_t Weight)
virtual Float_tNoDCCut(Int_t Ind, Float_t Weight)
virtual Float_tNoECCut(Int_t Ind, Float_t Weight)
virtual Float_tNoSCCut(Int_t Ind, Float_t Weight)
virtual Bool_tTObject::Notify()
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
TPartSieve&operator=(const TPartSieve&)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
voidPrint()
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
virtual Int_tRefineIdDeut(Int_t Ind)
virtual Int_tRefineIdEl(Int_t Ind)
virtual Int_tRefineIdHe3(Int_t Ind)
virtual Int_tRefineIdHe4(Int_t Ind)
virtual Int_tRefineIdKm(Int_t Ind)
virtual Int_tRefineIdKp(Int_t Ind)
virtual Int_tRefineIdNeut(Int_t Ind)
voidRefineIdOff()
voidRefineIdOn()
virtual Int_tRefineIdPhot(Int_t Ind)
virtual Int_tRefineIdPim(Int_t Ind)
virtual Int_tRefineIdPip(Int_t Ind)
virtual Int_tRefineIdPos(Int_t Ind)
virtual Int_tRefineIdProt(Int_t Ind)
virtual Int_tRefineIdUnknown(Int_t Ind)
voidRefinePartId(Int_t Ind)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") const
virtual voidTObject::SavePrimitive(ostream& out, Option_t* option = "")
Int_tSetBadPaddle(Int_t sector, Int_t paddle)
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
voidSetConfidenceCut(Float_t conf)
voidSetDebugMode(Int_t Mode)
virtual voidTObject::SetDrawOption(Option_t* option = "")
static voidTObject::SetDtorOnly(void* obj)
static voidTObject::SetObjectStat(Bool_t stat)
voidSetRefConfidenceCut(Float_t conf)
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector& insp, char* parent)
Int_tSieveEvent()
voidSortOff()
voidSortOn()
virtual voidStreamer(TBuffer& b)
voidStreamerNVirtual(TBuffer& b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidTObject::UseCurrentStyle()
TVERTClass*Vert_Error_Handler(Int_t NRows, Int_t track1, Int_t track2)
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = "0", Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = "0", Int_t option = 0, Int_t bufsize = 0) const
protected:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidTObject::MakeZombie()

Data Members

public:
enum E_SortFlag_state { kSortFlag_SortOn
kSortFlag_ConfidenceOn
kSortFlag_RefineIdOn
};
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
public:
Float_tfEC_U_Cut
Float_tfEC_V_Cut
Float_tfEC_W_Cut
Float_tfEC_U_Cut_width
Float_tfEC_V_Cut_width
Float_tfEC_W_Cut_width
Float_tfEC_Eio_slope
Float_tfEC_Eio_off
Float_tfEC_Ein_cut
Float_tfEC_Eout_cut
Float_tfCC_Phe_cut
Float_tfCC_Phe_width
Float_tfConf_Pim_DT_min
Float_tfConf_Pim_DT_max
Float_tfConf_Pip_DT_min
Float_tfConf_Pip_DT_max
Float_tfConf_Km_DT_min
Float_tfConf_Km_DT_max
Float_tfConf_Kp_DT_min
Float_tfConf_Kp_DT_max
Float_tfConf_Prot_DT_min
Float_tfConf_Prot_DT_max
Float_tfConf_Deut_DT_min
Float_tfConf_Deut_DT_max
Float_tfConf_He3_DT_min
Float_tfConf_He3_DT_max
Float_tfConf_He4_DT_min
Float_tfConf_He4_DT_max
Float_tfConf_Neut_DT_min
Float_tfConf_Neut_DT_max
Float_tfConf_El_DC_chi2
Float_tfConf_Prot_DC_chi2
Float_tfConf_Pim_DC_chi2
Float_tfConf_Pip_DC_chi2
Float_tfConf_Km_DC_chi2
Float_tfConf_Kp_DC_chi2
Float_tfConf_Deut_DC_chi2
Float_tfConf_He3_DC_chi2
Float_tfConf_He4_DC_chi2
Float_tfConf_El_DC_chi2_width
Float_tfConf_Prot_DC_chi2_width
Float_tfConf_Pim_DC_chi2_width
Float_tfConf_Pip_DC_chi2_width
Float_tfConf_Km_DC_chi2_width
Float_tfConf_Kp_DC_chi2_width
Float_tfConf_Deut_DC_chi2_width
Float_tfConf_He3_DC_chi2_width
Float_tfConf_He4_DC_chi2_width
vector<int>fvBadPaddles
TClasTool*fCTThis is a pointer to the actual reader used.
UShort_tfSortFlagThis flag controls the mode of the Sieve
Int_tfDebug_ModeSets the verbosity of the code.
Int_tfIndexSaveused by IDtoInd and IDtoIndQuick for faster use
Float_tfRefConfidenceCutwhen Refining Id's parts with less than this confidence will be refined
Float_tfConfidenceCutMinimum confidence for Sieve to store a particle
Int_tfNPart[13]Stores the numbers of each type of particle in an event
Int_tfIndex[13][10]Stores the particle index in the EVNT bank
Float_tfConfidence[13][10]Confidence level in particle id

Class Description

____________________ 

TPartSieve

Particle ID cleanup and improvement for ClasTool

Created at UNH by Will Morrison and Maurik Holtrop

TPartSieve is part of the CLASTOOL analysis framework. It is designed to facilitate physics analysis by providing a structure that can be customized to a specific analysis with custom cuts, etc., without changing the details of how the functions are used in an analysis program. These customizations are easy to make, and TPartSieve is designed for easy use and easy comprehension.

The Sieve can be run over an entire event in one of three modes, either Sort, Confidence or Refine. Sort mode is useful for preliminary looks at data. It is also useful in code that already has Sieve mechanisms in place but no longer needs to use the Confidence or Refinement. This mode makes looking at specific particles very easy; one can for example loop through all pions in an event using only two lines of code.

Confidence mode assigns a confidence level to each particles ID, and throws away particles below an ajustable confidence level. The confidence level is determined using a set of particle specific functions. See the function GetConfidence() for an explanation of the confidence level setting scheme.

Refine mode looks through particles and find ones with less than adequate confidence. It then determines what the id should be using a set of particle specific functions. These are NOT CURRENTLY IMPLEMENTED.

Benchmarking

Running over one run and using this class's sort function and filling a histogram with the number of each particle took 34.5 seconds. A comparable program using only TClasTool took 31.6 seconds.

Additional information about this package, including an overview, can be found at the ClasTool Documentation web pages.

 
 
   

TPartSieve()
 Class default constructor.

TPartSieve(TClasTool *clastool, Int_t runnum)
 Class Constructor, setting up PartSieve properly with a TClasTool

 The runnum argument may be used later when we couple to a database 
 to get constants for cuts for a specific run. It is not used now.
~TPartSieve()
 Class default destructor.
void SortOn()
Calling this function turns on a flag that causes SieveEvent() to
count and store the number of each particle and store each particle's
index into the EVNT bank.

This is useful for getting how many of a certain particle are in 
an event. It is also useful because it is easy to tell it to get,
for example, the second kaon+, using GetEVNT. This should also be used 
in combination with the other two modes, in order for one to look at the
particles he has just analyzed.
void ConfidenceOn()
Calling this function turns on a flag that causes SieveEvent() to
calculate and store a confidence level in each particle's id.

Use this to measure the confidence level in each particle's RECSIS 
id. For example if a particle's RECSIS id is proton and this function
assigns a confidence of .65, there is a 65% chance that it is actually
a proton.
void RefineIdOn()
Calling this function turns on a flag that causes SieveEvent() to
recalculate the id of each particle in the event.

This mode will actually change the particle id's that were assigned 
in RECSIS. Make sure you understand what the refinements are actually
doing before you use this mode!
void SortOff()
Turns of particle sorting capability
void ConfidenceOff()
Turn off confidence setting capability
void RefineIdOff()
Turn off Id refining capability
void SetDebugMode(Int_t Mode)
Set verbosity of code
Debug Mode = -1 : Absolutely no output
Debug Mode =  0 : Warning Messages only.
Debug Mode =  1 : Helpful non-warning messages and warning for too many particles in event.
Int_t SieveEvent()
 This function looks over each particle in the event. It can do the 
 following in any combination:
 1. Count and save the number of each type of particle in the event,
 as well as the EVNT index of each particle. These particles can then be
 accessed by telling the Sieve to get the 0th, 1st, 2nd etc. of such 
 and such a particle.
 2. Calculate the confidence that the RECSIS particle id is correct, 
 however this is only useful if you then save this info using option 1.
 3. Recalculate the particle id and save this new id.
void IndexPart(Int_t Ind, Float_t confidence)
THIS FUNCTION HAS BEEN WRITTEN FOR INTERNAL USE ONLY AND IS NOT ACCESSIBLE TO THE USER.

This will properly save a particle's index into the EVNT bank. It will
also incremement its counter. This routine saves the particle confidence 
if in the SetConfidence mode.
Float_t GetPartConf(Int_t Ind)
 This function returns the confidence level that the particle with EVNT 
 index Ind's RECSIS id is correct. For example if a particle's RECSIS id 
 is proton and this function /returns a confidence of .65, there is a 65%
 chance that it is actually a proton.

 The confidence level is set using a two-tiered system. The first tier consists
 of the Conf### functions, where ### is the particle name.
 In these functions the cuts that are to be used on the specific particle
 are selected. These functions also may contain code for a cut that
 is specific to a certain particle, however this should be very limited.

 The second tier of the system is the Cut functions themselves. The 
 general idea for these functions is that there is an ideal value of
 quantity that a particle may have. The experimental value will differ
 from this ideal value. The user inputs the maximum difference between
 ideal and experimental and the weight of this cut into the functions 
 as arguements. These functions are meant to be general and may require
 additional arguements such as the mass of the particle in question.
void RefinePartId(Int_t Ind)
 THIS IS CURRENTLY TOTALLY NON FUNCTIONAL. 
 
 The thought behind it may even be flawed....
Int_t GetNPid(Int_t PartId)
Get the number of particles with PartId in last sorted event.
Returns negative on error.

See GetNIdx(Int_t idx) (inlined function) for doing the same from an index.
Int_t GetIndexPid(Int_t PartId, Int_t num)
Get the index into the EVNT bank for the numth PartId. Indexes start at 0.
Returns negative on error.
Int_t GetIndexIdx(Int_t idx, Int_t num)
Get the index into the EVNT bank for the numth Idx. Indexes start at 0.
Returns negative on error.
TEVNTClass* GetEVNTIdx(Int_t idx, Int_t num)
Returns a pointer to the TEVNTClass for the numth INDEX, starting at index 0.
Returns NULL on error.
TEVNTClass* GetEVNTPid(Int_t PartId, Int_t num)
Returns a pointer to the TEVNTClass for the numth PartID, starting at index 0.
Returns NULL on error.
void IndexConf(Float_t conf,Int_t PartId,Int_t num)
If you wish to save a particle confidence you have got independently of SieveEvent,
this will save it in the numth slot of PartId
void Print()
Prints the number of each type of particle in the event and the SortFlag value.
You must call SieveEvent() first to see anything meaningful.
Float_t GetConfFast(Int_t PartId, Int_t num)
Returns the confidence from from the table. This table is constructed if the 
routine is run with ConfidenceOn(). Returns negative on error.
Int_t IndtoID(Int_t Ind)
This transforms a particle index to the particle id#.
This is a passthrough call to TClasTool::GetPidFromType.

Float_t ConfUnknown(Int_t Ind)
The Conf functions select the cuts that are relevent to their particle.
There is a seperate function for each particle because it keeps the 
code easy to read and straightforward. It is also the job of these 
functions to select the weight of each cut and how much range the cut 
should have.

Calculate the confidence that particle with EVNT index Ind is an electron.
Float_t ConfPip(Int_t Ind)
 Calculate the confidence that particle with EVNT index Ind is a Pi+.
 Currently this is a hard cut on DeltaT, between 
 fConf_Pim_DT_min and fConf_Pim_DT_max

Float_t ConfPim(Int_t Ind)
 Calculate the confidence that particle with EVNT index Ind is a Pi-.
 Currently this is a hard cut on DeltaT, between 
 fConf_Pip_DT_min and fConf_Pip_DT_max

Float_t ConfProt(Int_t Ind)
Calculate the confidence that particle with EVNT index Ind is a proton.
 Currently this is a hard cut on DeltaT, between 
 fConf_Prot_DT_min and fConf_Prot_DT_max

Float_t ConfEl(Int_t Ind,Float_t WidthMultiply)
Calculate the confidence that particle with EVNT index Ind is an electron

Float_t ConfPos(Int_t Ind)
Calculate the confidence that particle with EVNT index Ind is a positron.
This calls the routine for the electron: ConfEl(Ind,0.)
Float_t ConfPhot(Int_t Ind)
Calculate the confidence that particle with EVNT index Ind is a photon.
Float_t ConfNeut(Int_t Ind)
Calculate the confidence that particle with EVNT index Ind is a neutron.
Float_t ConfKp(Int_t Ind)
 Calculate the confidence that particle with EVNT index Ind is a K+.
 Currently this is a hard cut on DeltaT, between 
 fConf_Pip_DT_min and fConf_Pip_DT_max

Float_t ConfKm(Int_t Ind)
 Calculate the confidence that particle with EVNT index Ind is a K-.
 Currently this is a hard cut on DeltaT, between 
 fConf_Pip_DT_min and fConf_Pip_DT_max

Float_t ConfDeut(Int_t Ind)
Calculate the confidence that particle with EVNT index Ind is a deuteron.
Float_t ConfHe3(Int_t Ind)
Calculate the confidence that particle with EVNT index Ind is a Helium 3.
Float_t ConfHe4(Int_t Ind)
Calculate the confidence that particle with EVNT index Ind is a Helium 4.
Int_t RefineIdUnknown(Int_t Ind)
 right now.
Int_t RefineIdPip(Int_t Ind)
Refine the Id of a Pi+.
Int_t RefineIdProt(Int_t Ind)
Refine the Id of a proton.
Int_t RefineIdEl(Int_t Ind)
Refine the Id of an electron.
Int_t RefineIdPhot(Int_t Ind)
Refine the Id of a photon.
Int_t RefineIdPim(Int_t Ind)
Refine the Id of a Pi-.
Int_t RefineIdNeut(Int_t Ind)
Refine the Id of a neutron.
Int_t RefineIdKp(Int_t Ind)
Refine the Id of a kaon+.
Int_t RefineIdDeut(Int_t Ind)
Refine the Id of a deuteron.
Int_t RefineIdKm(Int_t Ind)
Refine the Id of a kaon-.
Int_t RefineIdHe3(Int_t Ind)
Refine the Id of a helium 3.
Int_t RefineIdHe4(Int_t Ind)
Refine the Id of a helium 4.
Int_t RefineIdPos(Int_t Ind)
Refine the Id of a positron.
void ChangeID(Int_t Ind, Int_t ID)
This function changes the id of the particle in the ClasTool bank with
index Ind to the ID in the arguement.
void SetConfidenceCut(Float_t conf)
Set the minimum confidence a particle may have and be saved in the Sieve
void SetRefConfidenceCut(Float_t conf)
Set the minimum confidence a particle may have if it is not to be refined
Float_t BetaBetaCut(Int_t Ind, Float_t mass, Float_t Weight,Float_t MaxDiff)
 In these Cut functions the difference between an ideal value and the 
 experimental value is calculated. The difference is scaled so that a
 difference of MaxDiff is scaled to 1, values less are less than 1 and
 values greater than MaxDiff are greater than 1. The scaled difference is
 then multiplied by Weight and returned. The returned value is meant to 
 be subtracted from the confidence.

 Compares the Beta from EVNT class with betta found using the formula
 B= p/sqrt(p^2 + m^2).m is the input parameter mass. Use the accepted value.
 Weight is a measure of how severe the cut is. Returns the 
 reduction in confidence.
Float_t CutConfMax(Float_t x,Float_t cut,Float_t width)
 Helper function.
 This function return 1 if x is below cut-width/2.
 It will return       0 if x is above cut+width/2.
 Between cut-width/2 and cut+width/2 it returns a value between 1 and 0
 decreasing linearly.
Float_t CutConfMin(Float_t x,Float_t cut,Float_t width)
 Helper function.
 This function return 0 if x is below cut-width/2.
 It will return       1 if x is above cut+width/2.
 Between cut-width/2 and cut+width/2 it returns a value between 0 and 1
 increasing linearly.
Float_t ECUVWCut(Int_t Ind, Float_t WidthMultiply)
 See Float_t TPartSieve::ECUVWCut(TEVNTClass *evnt, Float_t WidthMultiply)
Float_t ECUVWCut(TEVNTClass *evnt, Float_t WidthMultiply)
 This function cuts on the U,V and W coordinate on the EC plane. 
 These cuts make sure we do not use the events that are too close to the edge
 where some of the shower could have leaked out of the calorimeter.

 Instead of a hard cut, where the function would return 1 if you are inside
 and 0 if you are outside, each cut specifies a "width". The function returns
 a value of 0 or 1 outside this widht, and inside the width it returns a 
 value bewteen 0 and 1. The "WidthMultiply" parameter allows you to stretch
 or shrink these widths. So WidthMultiply=0 will give you the standard
 1 or 0 behavior.

 Cuts are specified by fEC_U_Cut, fEC_V_Cut and fEC_W_Cut, where the U cut
 is a cut on minumum U, and the V and W cuts are maxima. The widths for
 these cuts are set in fEC_?_Cut_width.

 Reasonable defaults are choosen for these cuts, but you probably want to 
 fine tune them for your analysis.


Float_t EC_Eio_Cut(Int_t Ind,Float_t WidthMultiply)
 See TPartSieve::EC_Eio_Cut((TEVNTClass *evnt,Float_t WidthMultiply)
Float_t EC_Eio_Cut(TEVNTClass *evnt,Float_t WidthMultiply)
 This performs a cut on the EC Inner energy versus the EC Outer energy
 to identify good electrons.
 The cut is a line: Eout/p >= Off - Slope* Ein/p
 Where Off=0.156 , Slope=1 is standard.

 Right now this is a hard cut, returning 0 or 1.
Float_t GetDeltaT(Int_t Ind)
 See TPartSieve::GetDeltaT(TSCPBClass *sc,Float_t p,Int_t ipart)

Float_t GetDeltaT(TEVNTClass *evnt)
 Get the DeltaT (difference between flight time calculated from
 sc hit and from momentum, see below) for event *evnt.

 First checks whether there was an SC hit, if not returns -1000.
 Next, checks whether the SC paddle is on the bad paddle list,
 if so, returns -999.
 If neither of the above, it returns the DeltaT by calling the routine below.

Float_t GetDeltaT(TSCPBClass *sc,Float_t p,Int_t ipart)
 Returns the difference between flight time calculated from
 the scintellator hit time dt_sc=(sc->Time - head->STT) and the flight time
 calculated from the momentum: dt_p=sc->Path/(29.9*betap), where 
 betap = p/(p*p+m*m) , with m the guessed at particle mass.
 This should thus be zero if the mass is guessed correctly and resolution
 is perfect.

 No checking is done for the validity of the *sc pointer!
 Returns the DeltaT.

Float_t GetDeltaT_EC(TECPBClass *ec,Float_t p,Int_t ipart)
 Same at GetDeltaT, but for the flight path to the EC.
 Returns the difference between flight time calculated from
 the EC hit time dt_ec=(ec->Time - head->STT) and the flight time
 calculated from the momentum: dt_p=ec->Path/(29.9*betap), where 
 betap = p/(p*p+m*m) , with m the guessed at particle mass.
 This should thus be zero if the mass is guessed correctly and resolution
 is perfect.

Float_t Get_DC_Qual(Int_t Ind,Float_t Chi2,Float_t Width)
 Check the quality of the track. 
 If no DC at all or TEVNTClass::GetDCStat<=0 return 0.
 Also return 0. if the TEVNTClass:GetStat()<=0;
 This filters out the hit based only tracks.
 Else, compare the Chi2 requested with the Chi2 of the track.
 
Float_t CC_Phe_Cut(Int_t Ind,Float_t WidthMultiply)
 Cut on the number of CC photons, given an index.

Float_t CC_Phe_Cut(TEVNTClass *evnt,Float_t WidthMultiply)
 Cut on the number of CC photons.

Float_t NoCCCut(Int_t Ind, Float_t Weight)
Cut For particles missing a CC bank
Float_t NoECCut(Int_t Ind, Float_t Weight)
Cut For particles missing an EC bank
Float_t NoDCCut(Int_t Ind,Float_t Weight)
Cut For particles missing a DC bank
Float_t NoSCCut(Int_t Ind,Float_t Weight)
Cut For particles missing an SC bank
Bool_t CheckSCPaddle(TSCPBClass *sc)
 Check is sc is on the bad paddle list.
Bool_t CheckSCPaddle(Int_t sccode)
 Check is sccode is on the bad paddle list.
Bool_t CheckSCPaddle(Int_t sec,Int_t paddle)
 Check if {sec,paddle} is on the bad baddle list.
Int_t SetBadPaddle(Int_t sec,Int_t paddle)
 Set a paddle as bad in bad paddle list.
 Returns the new number of bad paddles;

Float_t GetBetaP(Float_t p,Int_t ipart)
 return beta from momentum and mass (index).
Int_t IDtoInd(Int_t PartId)
====================================================================================
This transforms particle id to particle index.
This is a passthrough call to TClasTool::GetTypeFromPid, but in addition
 stores the value in fIndexSave for later retrieval with IDtoIndQuick().
 (inline function);
Int_t IDtoIndQuick()
==============================================================================
returns the last value found by IDtoInd. This avoids doing multiple searches.  
TPartSieve()
Int_t GetNIdx(Int_t idx)
{return fNPart[idx];}
TVERTClass* GetVert(Int_t PID1, Int_t num1, Int_t PID2, Int_t num2)
This function should be somewhere else (ie. the vertex class, but I 
need it for an analysis and this was the simplest place to put it.
TVERTClass* Vert_Error_Handler(Int_t NRows,Int_t track1,Int_t track2)


Author: Maurik Holtrop
Last update: PartSieve/TPartSieve:$Name: $:$Id: TPartSieve.cc,v 1.8 2007/03/01 22:27:00 holtrop Exp $
CopyLeft - This code is freely available.

ROOT Home page - ClasTool Class index - Class Hierarchy - Top of the page