FEDRA emulsion software from the OPERA Collaboration
|
Namespaces | |
namespace | ROOTDict |
Enumerations | |
enum | EDACOLOR { kCOLOR_BY_PLATE , kCOLOR_BY_PH , kCOLOR_BY_ID , kCOLOR_BY_MCID , kCOLOR_BY_PARTICLE , kBLACKWHITE } |
enum | EDAEXTENDMODE { kExtendAuto , kExtendUpDown , kExtendDown , kExtendUp , kExtendNo } |
Functions | |
bool | AskYesNo (char *message) |
double | CalcDistance (EdbSegP *s1, EdbSegP *s2, double z) |
double | CalcDmin (EdbSegP *seg1, EdbSegP *seg2, double *dminz=NULL) |
void | CalcDTTransLongi (double tx1, double ty1, double tx2, double ty2, double *dtTransverse, double *dtLongitudinal) |
void | CalcDTTransLongi (EdbSegP *s1, EdbSegP *s2, double *dtTransverse, double *dtLongitudinal) |
void | CalcDXTransLongi (EdbSegP *s1, EdbSegP *s2, double *dxt, double *dxl) |
double | CalcEMCSelectron (EdbTrackP *t) |
double | CalcIP (EdbSegP *s, double x, double y, double z) |
double | CalcIP (EdbSegP *s, EdbVertex *v) |
double | CalcKinkAngle (EdbSegP *tparent, EdbSegP *tdaughter) |
double | CalcMinimumKinkAngle (EdbSegP *t1ry, EdbSegP *tdaughter, int z_is_middle_of_base=1) |
double | CalcMinimumKinkAngle (EdbVertex *v1ry, EdbSegP *tdaughter, int z_is_middle_of_base=1) |
double | CalcMinimumKinkAngle (TVector3 vertex, TVector3 daupos, TVector3 daumom) |
EdbMomentumEstimator * | CalcP (EdbTrackP *t, double &p, double &pmin, double &pmax, bool print=kTRUE) |
void | CalcPPartial (EdbTrackP *t, EdbSegP *s1st, EdbSegP *slast, double &p, double &pmin, double &pmax, bool print=kTRUE) |
double | CalcPt (EdbSegP *tparent, EdbSegP *tdaughter) |
double | CalcPtmin (EdbSegP *t1ry, EdbSegP *tdaughter, int z_is_middle_of_base=1) |
double | CalcPtmin (EdbVertex *v1ry, EdbSegP *tdaughter, int z_is_middle_of_base=1) |
double | CalcPtmin (TVector3 vertex, TVector3 daupos, TVector3 daumom) |
EdbVertex * | CalcVertex (TObjArray *segments) |
calc vertex from the segments array (EdbSegP*) More... | |
EdbTrackP * | CleanTrack (EdbTrackP *t) |
double | DTRMS (EdbTrackP *t) |
double | DTRMS1Kink (EdbTrackP *t, int *NKinkAngleUsed=NULL) |
double | DTRMSelectron (EdbTrackP *t) |
double | DTRMSTL (EdbTrackP *t, double *rmsspace, double *rmstransverse, double *rmslongitudinal, int *ndata=NULL) |
double | DTRMSTL1Kink (EdbTrackP *t, double *rmsspace, double *rmstransverse, double *rmslongitudinal, int *NKinkAngleUsed=NULL) |
double | DTRMSTLGiven1Kink (EdbTrackP *t, int iKink, double *rmsspace, double *rmstransverse, double *rmslongitudinal, int *NKinkAngleUsed=NULL) |
void | ErrorMessage (char *message) |
void | ErrorMessage (char *title, char *message) |
void | FillTracksFromPatterns (EdbPVRec *pvr) |
int | FindBrickIDFromPath () |
char * | FindProcDirClient () |
TEveCompound * | GetTrackElement (EdbTrackP *t) |
TEvePointSet * | GetVertexElement (EdbVertex *v) |
int | InputID (char *message, EdbID &id) |
int | InputNumberInteger (char *message, int idefault=0) |
double | InputNumberReal (char *message, double default_num=0.0, TGNumberFormat::EStyle es=TGNumberFormat::kNESReal) |
int | IsIncludeCouples (EdbPattern *pat) |
int | IsSegment (TEveElement *e) |
int | IsSegment (TObject *o) |
int | IsTrack (TEveElement *e) |
int | IsTrack (TObject *o) |
int | IsVertex (TEveElement *e) |
int | IsVertex (TObject *o) |
void | MakePVRFromTracksArray (TObjArray *tracks_or_segments, EdbPVRec &pvr) |
EdbPVRec * | ReadFeedbackPVR (char *filename=NULL) |
EdbPVRec * | ReadMxxPVR (char *filename=NULL) |
void | WritePVRMxx (EdbPVRec *pvr, char *filename=NULL) |
void | WriteTracksMxx (TObjArray *pvr, char *filename=NULL) |
enum EdbEDAUtil::EDACOLOR |
Enumerator | |
---|---|
kCOLOR_BY_PLATE | |
kCOLOR_BY_PH | |
kCOLOR_BY_ID | |
kCOLOR_BY_MCID | |
kCOLOR_BY_PARTICLE | |
kBLACKWHITE |
Enumerator | |
---|---|
kExtendAuto | |
kExtendUpDown | |
kExtendDown | |
kExtendUp | |
kExtendNo |
bool EdbEDAUtil::AskYesNo | ( | char * | message | ) |
Open a message dialog and ask you YES or No.
if YES, return kTRUE
if NO, return kFALSE
else return kFALSE
calculate distance
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
return deltaZ between Z(dmin) and Z(seg1). ==> if vertex is upstream, return plus value.
void EdbEDAUtil::CalcDTTransLongi | ( | double | tx1, |
double | ty1, | ||
double | tx2, | ||
double | ty2, | ||
double * | dtTransverse, | ||
double * | dtLongitudinal | ||
) |
void EdbEDAUtil::CalcDTTransLongi | ( | EdbSegP * | s1, |
EdbSegP * | s2, | ||
double * | dtTransverse, | ||
double * | dtLongitudinal | ||
) |
double EdbEDAUtil::CalcEMCSelectron | ( | EdbTrackP * | t | ) |
double EdbEDAUtil::CalcIP | ( | EdbSegP * | s, |
double | x, | ||
double | y, | ||
double | z | ||
) |
calculate IP between a given segment and a given vertex.
return the IP value.
this is used for IP cut.
if vertex is not given, use the selected vertex.
if(v==NULL) v=gEDA->GetSelectedVertex();
double EdbEDAUtil::CalcMinimumKinkAngle | ( | EdbSegP * | t1ry, |
EdbSegP * | tdaughter, | ||
int | z_is_middle_of_base = 1 |
||
) |
calculate minimum kink angle
for the short decay with only 1 track from primary and 1 track from secondary vertex.
move virtual vertex in the lead, find minimimum kink angle.
if z_is_middle_of_base==1, move z position of tracks 150 microns upstream.
double EdbEDAUtil::CalcMinimumKinkAngle | ( | EdbVertex * | v1ry, |
EdbSegP * | tdaughter, | ||
int | z_is_middle_of_base = 1 |
||
) |
Minimum kink angle calculation in case that 1ry vertex is define && 1 daughter.
double EdbEDAUtil::CalcMinimumKinkAngle | ( | TVector3 | vertex, |
TVector3 | daupos, | ||
TVector3 | daumom | ||
) |
EdbMomentumEstimator * EdbEDAUtil::CalcP | ( | EdbTrackP * | t, |
double & | p, | ||
double & | pmin, | ||
double & | pmax, | ||
bool | print = kTRUE |
||
) |
void EdbEDAUtil::CalcPPartial | ( | EdbTrackP * | t, |
EdbSegP * | s1st, | ||
EdbSegP * | slast, | ||
double & | p, | ||
double & | pmin, | ||
double & | pmax, | ||
bool | print = kTRUE |
||
) |
momentum calculation partially using from s2 to slast.
Ptmin calculation in case that only 1ry track at 1ry vertex && 1 daughter.
move virtual vertex to find minimum kink angle. see also CalcMinimumKinkAngle()
Ptmin calculation in case that 1ry vertex is define && 1 daughter.
double EdbEDAUtil::CalcPtmin | ( | TVector3 | vertex, |
TVector3 | daupos, | ||
TVector3 | daumom | ||
) |
EdbVertex * EdbEDAUtil::CalcVertex | ( | TObjArray * | segments | ) |
calc vertex from the segments array (EdbSegP*)
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.
remove fake-segment/Microtrack/pl57. return a pointer to newly created track.;
if Nseg<=4, no fake-segment will be removed.
if fake-segments exist, create a new track without the fake segments and return the pointer.
1st segment will not be rejected as fake.
segment on pl57 will be rejected every time.
double EdbEDAUtil::DTRMS | ( | EdbTrackP * | t | ) |
calculate rms of delta-theta assuming 1 kink exist(remove 1 biggest dtheta).
return rms(space), not projection. dtheta of 1 plate.
if nhale exists, the dtheta is calculated as dtheta=dtheta/sqrt(nhole+1)
rejection of 1 kink angle is for more than 4 segments.
double EdbEDAUtil::DTRMSelectron | ( | EdbTrackP * | t | ) |
double EdbEDAUtil::DTRMSTL | ( | EdbTrackP * | t, |
double * | rmsspace, | ||
double * | rmstransverse, | ||
double * | rmslongitudinal, | ||
int * | ndata = NULL |
||
) |
calculate dtheta-RMS for each components (Spase angle, Transverse angle, Longitudinal angle)
normally RMS(Transverse) is smaller than RMS(Longitudinal).
Transverse component doesn't have dependence on the angle.
ndata will be filled with number of data for transverse or longitudinal.
so that, actual ndata for rmsspace need to be multiplied by 2.
double EdbEDAUtil::DTRMSTL1Kink | ( | EdbTrackP * | t, |
double * | rmsspace, | ||
double * | rmstransverse, | ||
double * | rmslongitudinal, | ||
int * | NKinkAngleUsed = NULL |
||
) |
calculate rms of delta-theta assuming 1 kink exist(remove 1 biggest dtheta).
return rms(transverse).
if nhale exists, the dtheta is calculated as dtheta=dtheta/sqrt(nhole+1).
rejection of 1 kink angle is for more than 4 segments.
if a segment is on pl57, this segment will not used.
double EdbEDAUtil::DTRMSTLGiven1Kink | ( | EdbTrackP * | t, |
int | iKink, | ||
double * | rmsspace, | ||
double * | rmstransverse, | ||
double * | rmslongitudinal, | ||
int * | NKinkAngleUsed = NULL |
||
) |
calculate rms of delta-theta assuming 1 "given" kink.
return rms(transverse).
if nhale exists, the dtheta is calculated as dtheta=dtheta/sqrt(nhole+1).
if a segment is on pl57, this segment will not used.
void EdbEDAUtil::ErrorMessage | ( | char * | message | ) |
void EdbEDAUtil::ErrorMessage | ( | char * | title, |
char * | message | ||
) |
convert segments in patterns into Tracks in EdbPVRec object.
each track has 1 segment
int EdbEDAUtil::FindBrickIDFromPath | ( | ) |
char * EdbEDAUtil::FindProcDirClient | ( | ) |
Find ProcDirClient from the current path.
"ONLINE" is the hard coded name for ProcDirClient.
TEveCompound * EdbEDAUtil::GetTrackElement | ( | EdbTrackP * | t | ) |
TEvePointSet * EdbEDAUtil::GetVertexElement | ( | EdbVertex * | v | ) |
Return the correspoinding TEvePointSet element to the EdbVertex.
int EdbEDAUtil::InputID | ( | char * | message, |
EdbID & | id | ||
) |
create a number entry window and return the number
return 1 if successful, 0 if cancel.
int EdbEDAUtil::InputNumberInteger | ( | char * | message, |
int | idefault = 0 |
||
) |
double EdbEDAUtil::InputNumberReal | ( | char * | message, |
double | default_num = 0.0 , |
||
TGNumberFormat::EStyle | es = TGNumberFormat::kNESReal |
||
) |
create a number entry window and return the number
int EdbEDAUtil::IsIncludeCouples | ( | EdbPattern * | pat | ) |
if pattern includes BT, return 1.
check all segments whether the seg->Track()==-1 or not.
int EdbEDAUtil::IsSegment | ( | TEveElement * | e | ) |
int EdbEDAUtil::IsSegment | ( | TObject * | o | ) |
int EdbEDAUtil::IsTrack | ( | TEveElement * | e | ) |
int EdbEDAUtil::IsTrack | ( | TObject * | o | ) |
int EdbEDAUtil::IsVertex | ( | TEveElement * | e | ) |
int EdbEDAUtil::IsVertex | ( | TObject * | o | ) |
convert tracks or segments array into pvr.
if pointers of segments will not be consistent.
Read feedback file format (ver 2009 Oct), and return EdbPVRec object.
eTracks, eVTX, patterns are filled.
stand alone function.
if filename is not given, open file browser.