FEDRA emulsion software from the OPERA Collaboration
|
Root Class Definition for my Objects. More...
#include <EdbShowerAlg.h>
Public Member Functions | |
void | AddRecoShowerArray (TObjArray *RecoShowerArray) |
EdbVertex * | CalcVertex (TObjArray *segments) |
ClassDef (EdbShowerAlg, 1) | |
void | Convert_EdbPVRec_To_InBTArray () |
Double_t | DeltaR_NoPropagation (EdbSegP *s, EdbSegP *stest) |
Double_t | DeltaR_WithoutPropagation (EdbSegP *s, EdbSegP *stest) |
Double_t | DeltaR_WithPropagation (EdbSegP *s, EdbSegP *stest) |
Double_t | DeltaTheta (EdbSegP *s1, EdbSegP *s2) |
Double_t | DeltaThetaComponentwise (EdbSegP *s1, EdbSegP *s2) |
Double_t | DeltaThetaSingleAngles (EdbSegP *s1, EdbSegP *s2) |
EdbShowerAlg () | |
EdbShowerAlg (TString AlgName, Int_t AlgValue) | |
virtual void | Execute () |
virtual void | Finalize () |
TString | GetAlgName () const |
Int_t | GetAlgValue () const |
Double_t | GetMinimumDist (EdbSegP *seg1, EdbSegP *seg2) |
TObjArray * | GetRecoShowerArray () const |
Int_t | GetRecoShowerArrayN () const |
Double_t | GetSpatialDist (EdbSegP *s1, EdbSegP *s2) |
virtual void | Initialize () |
Bool_t | IsInConeTube (EdbSegP *sTest, EdbSegP *sStart, Double_t CylinderRadius, Double_t ConeAngle) |
void | Print () |
void | PrintAll () |
void | PrintMore () |
void | PrintParameters () |
void | PrintParametersShort () |
void | PrintRecoShowerArray () |
void | SetActualAlgParameterset (Int_t ActualAlgParametersetNr) |
void | SetDebug () |
void | SetEdbPVRec (EdbPVRec *Ali) |
void | SetEdbPVRecPIDNumbers (Int_t FirstPlate_eAliPID, Int_t LastPlate_eAliPID, Int_t MiddlePlate_eAliPID, Int_t NumberPlate_eAliPID) |
void | SetInBTArray (TObjArray *InBTArray) |
void | SetParameter (Int_t parNr, Float_t parvalue) |
void | SetParameters (Float_t *par) |
void | SetRecoShowerArray (TObjArray *RecoShowerArray) |
void | SetRecoShowerArrayN (Int_t RecoShowerArrayN) |
void | SetUseAliSub (Bool_t UseAliSub) |
void | Transform_eAli (EdbSegP *InitiatorBT, Float_t ExtractSize) |
virtual | ~EdbShowerAlg () |
virtual constructor due to inherited class More... | |
Protected Member Functions | |
void | Set0 () |
Protected Attributes | |
Int_t | eActualAlgParametersetNr |
Used when more sets of same algorithm. More... | |
TString | eAlgName |
Int_t | eAlgValue |
EdbPVRec * | eAli |
EdbPVRec * | eAli_Sub |
Int_t | eAli_SubNpat |
Int_t | eAliNpat |
Bool_t | eDebug |
Int_t | eFirstPlate_eAliPID |
TObjArray * | eInBTArray |
Int_t | eInBTArrayN |
Int_t | eLastPlate_eAliPID |
Int_t | eMiddlePlate_eAliPID |
Int_t | eNumberPlate_eAliPID |
TString | eParaString [10] |
Float_t | eParaValue [10] |
EdbTrackP * | eRecoShower |
TObjArray * | eRecoShowerArray |
Int_t | eRecoShowerArrayN |
Int_t | eUseAliSub |
Root Class Definition for my Objects.
EdbShowerAlg::EdbShowerAlg | ( | ) |
EdbShowerAlg::EdbShowerAlg | ( | TString | AlgName, |
Int_t | AlgValue | ||
) |
Reset all:
|
virtual |
virtual constructor due to inherited class
Default Destructor
void EdbShowerAlg::AddRecoShowerArray | ( | TObjArray * | RecoShowerArray | ) |
Add an array to the existing RecoShower array.
For retrieving objects and handling them: be carefull that
you add objects of the same class.
EdbVertex * EdbShowerAlg::CalcVertex | ( | TObjArray * | segments | ) |
Exactly same implementation as in EdbEDAUtil.C
but I do not want to link in hardcoded all eda libraries.
calc vertex point with given segments. just topological calculation.
VTA is currently not set.
in case of Single-stop. make a vertex 650 micron upstream ob base.
EdbShowerAlg::ClassDef | ( | EdbShowerAlg | , |
1 | |||
) |
void EdbShowerAlg::Convert_EdbPVRec_To_InBTArray | ( | ) |
This function takes all basetracks of the EdbPVRec object,
and fills the InBTArray with those.
This function is useful, if one wants to start from all
possible basetracks.
Calculate the distance between two basetracks by
sqrt((deltaX)^2+(deltaY)^2)
Do NOT propagate tracks onto same Z, in case they are different.
SAME function as DeltaR_WithoutPropagation !!!
Calculate the distance between two basetracks by
sqrt((deltaX)^2+(deltaY)^2)
DO propagate tracks onto same Z, in case they are different.
(propagation is done from stest onto Z-position of s)
Be aware that this DeltaTheta function returns the abs() difference between the
ABSOLUTE values of dTheta!!! (not componentwise!
Be aware that this DeltaTheta function returns the difference between the component values of dTheta!!!
Acutally this function should be the normal way to calculate dTheta correctly...
SAME function as DeltaThetaComponentwise !!!
|
virtual |
Reimplemented in EdbShowerAlg_GS.
|
virtual |
Reimplemented in EdbShowerAlg_GS.
|
inline |
|
inline |
Calculate minimum distance of 2 lines.
Use the data of (the selected object)->X(), Y(), Z(), TX(), TY().
means, if the selected object == segment, use the data of the segment. or it == track, the use the fitted data.
Original code from Tomoko Ariga
(double calc_dmin(EdbSegP *seg1, EdbSegP *seg2, double *dminz = NULL))
|
inline |
|
inline |
Mainly Z values should dominate...
since the are at the order of 10k microns and x,y of 1k microns
|
virtual |
Reimplemented in EdbShowerAlg_GS.
Bool_t EdbShowerAlg::IsInConeTube | ( | EdbSegP * | sTest, |
EdbSegP * | sStart, | ||
Double_t | CylinderRadius, | ||
Double_t | ConeAngle | ||
) |
General Function which returns Bool if the Testing BaeTrack is in a cone defined
by the StartingBaseTrack. In case of starting same Z position, a distance cut of
20microns is assumed....
In case of TestingSegment==StartingSegment this function should correctly return kTRUE also...
Outside if angle greater than ConeAngle (to be fulfilled for Cone and Tube in both cases)
if angle smaller than ConeAngle, then you can differ between Tuberadius and CylinderRadius
void EdbShowerAlg::Print | ( | ) |
void EdbShowerAlg::PrintAll | ( | ) |
void EdbShowerAlg::PrintMore | ( | ) |
void EdbShowerAlg::PrintParameters | ( | ) |
void EdbShowerAlg::PrintParametersShort | ( | ) |
void EdbShowerAlg::PrintRecoShowerArray | ( | ) |
|
protected |
Reset internal variable to default values.
|
inline |
|
inline |
|
inline |
|
inline |
void EdbShowerAlg::SetParameter | ( | Int_t | parNr, |
Float_t | parvalue | ||
) |
void EdbShowerAlg::SetParameters | ( | Float_t * | par | ) |
|
inline |
|
inline |
|
inline |
-----------------------------------------------------------------------------------—
Transform eAli to eAli_Sub:
the lenght of eAli_Sub is not changed.
Only XY-size (and MC) cuts are applied.
— Whereas in ShowRec.cpp the treebranch file is written directly after each
— BT reconstruction, it was not a problem when the eAliSub was deleted each time.
— But now situation is different, since the BTs of the showers have the adresses from
— the eAli_Sub !each! so if one eAli_Sub is deleted the EdbShowerP object has lost its
— BT adresses.
— So if we do not delete the eAli_Sub, reconstrtuction is fast (compared to eAli) but
— memory increases VERY fast.
— If we do use eAli, then memory consumption will not increase fast, but
— reconstruction is slow.
—
— Possible workarounds:
— For few InBTs (EDA use for data...): use eAliSub and dont delete it.
— For many InBTs (parameterstudies): use eAli—.
— Use always eAliSub, search BT correspond in eAli, add BT from eAli....May take also long time...
—
—
— SEVERE warning: IF gAli is in wrong order it can be that no showers
— SEVERE warning: are reconstructed since most implemented algorithms
— SEVERE warning: rely on the order that plate 2 comes directly behind
DEBUG if (eAli_Sub) { delete eAli_Sub;eAli_Sub=0;} // original, but keeps not adresses of segment in eAli.
do nothing now... let it live... delete eAli_Sub;eAli_Sub=0;}
if (eAli_Sub) { delete eAli_Sub;eAli_Sub=0;} Try not to delete it maybe then it works.....
|
protected |
Used when more sets of same algorithm.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |