FEDRA emulsion software from the OPERA Collaboration
|
new alignment class developed mainly for compton search More...
#include <EdbPositionAlignment.h>
Public Member Functions | |
bool | ActivatePosTree (const char *name="postree") |
int | Align () |
void | AlignWithTracks (int nang=3, int npos=0) |
int | DoubletsFilterOut (bool checkview=true) |
int | DoubletsFilterOutSide (EdbPatCell2 &pc, bool checkview=true) |
EdbPositionAlignment () | |
int | FillArrays (EdbPattern &p1, EdbPattern &p2) |
int | FillArrays (TObjArray &arr1, TObjArray &arr2, float xymin[2], float xymax[2]) |
int | FillCombinations () |
int | FillCombinations (EdbPatCell2 &pc1, EdbPatCell2 &pc2, float dx, float dy, float dtx, float dty) |
int | FillPosTree (float dz1, float dz2, int flag) |
void | FindCorrections (EdbPattern &pat1, EdbPattern &pat2, float DZ, bool doShrink) |
void | FindDiff (TObjArray &arr1, TObjArray &arr2, EdbPatCell2 &pc1, EdbPatCell2 &pc2, float &dx, float &dy, float &dtx, float &dty) |
void | FindDiff10 (float &dx, float &dy, float &dtx, float &dty) |
void | FindDiff12 (float &dx, float &dy, float &dtx, float &dty) |
void | FindDiff20 (float &dx, float &dy, float &dtx, float &dty) |
int | Link () |
void | PositionPlot (EdbH2 &hd) |
void | PositionPlot (float dz1, float dz2, EdbH2 &hd) |
void | PositionPlotA (EdbH2 &hd, float DR=0, TObjArray *arr1=0, TObjArray *arr2=0) |
void | PrintStat () |
void | PrintSummary () |
void | RankCouples () |
void | RankCouples (TObjArray &arr1, TObjArray &arr2, TObjArray &arrtr) |
void | RankCouples0 () |
void | RankCouplesFast (TObjArray &arrtr) |
int | ReadPosTree (TTree *tree, EdbPattern *p=0, EdbPattern *p1=0, EdbPattern *p2=0, TEventList *lst=0) |
void | ResetAngularCorr () |
void | ResetPeak () |
void | ResetPositionCorr () |
void | SaveAsTree (EdbPattern &pat, const char *name) |
int | SelectNarrowPeakDXDY (float dr, EdbH2 &hxy) |
int | SelectPeak (EdbPattern &p1, EdbPattern &p2, float dx, float dy, float dz1, float dz2) |
int | SelectPeak (EdbPattern &p1, EdbPattern &p2, float dx=10, float dy=10) |
int | SelectZone (float min[2], float max[2], TObjArray &arr1, TObjArray &arr2, float maxDens) |
int | SelectZoneSide (EdbPatCell2 &pc, float min[2], float max[2], TObjArray &arr, int nmax=kMaxInt) |
void | ShrinkageSelection (float dzbase) |
int | ShrinkageSelectionSide (EdbPatCell2 &pc1, EdbPatCell2 &pc2, EdbH2 &hshr, int nstep, float deltaShr) |
int | SpotsFilterOut (int nmax) |
int | WideSearchXY (EdbPattern &pat1, EdbPattern &pat2, EdbH2 &hxy, float dz, float xmin, float xmax, float ymin, float ymax) |
int | WritePosTree () |
float | Xcorr (EdbSegP &s, float dz) |
float | Xcorr (EdbSegP &s, float dz, float dx) |
float | Ycorr (EdbSegP &s, float dz) |
float | Ycorr (EdbSegP &s, float dz, float dy) |
void | Zselection (EdbH2 &hd) |
virtual | ~EdbPositionAlignment () |
Static Public Member Functions | |
static int | SelectBestComptons (TObjArray &a, TObjArray &arr, int nmax) |
Public Attributes | |
EdbAffine2D * | eAff |
the found affine transformation (when applied to pattern1 gives pattern2 ) More... | |
Float_t | eBinX |
Float_t | eBinY |
bin size for the differential hist (for example 5 microns) More... | |
Float_t | eChi2Max |
cut for the chi2 of the basetrack More... | |
TObjArray | eComb1 |
TObjArray | eComb2 |
array with the selected combinations of segments More... | |
Bool_t | eDoRot |
if true - perform the rotation selection More... | |
Float_t | eDTXmax |
Float_t | eDTXmin |
Float_t | eDTYmax |
max angular acceptance (ex: 0.15) for the coinsidences More... | |
Float_t | eDTYmin |
min angular difference for the dublets cutout More... | |
Float_t | eDXmin |
Float_t | eDYmin |
min position difference for the dublets cutout More... | |
EdbH2 | eHDZ |
histogram used for Z-selection More... | |
EdbH2 | eHpeak |
histogram used for peak selection More... | |
EdbH2 | eHShr1 |
histogram used for the shrinkage-selection More... | |
EdbH2 | eHShr2 |
histogram used for the shrinkage-selection More... | |
Int_t | eNpeak |
number of found combinations More... | |
Int_t | eNShr1step |
Int_t | eNShr2step |
number of steps for the Shr-selection More... | |
Int_t | eNZ1step |
Int_t | eNZ2step |
number of steps for the z-selection More... | |
EdbPatCell2 | ePC |
cells with the pointers to tracks More... | |
EdbPatCell2 | ePC1 |
EdbPatCell2 | ePC2 |
cells with the pointers to segments More... | |
TTree * | ePosTree |
optional: tree with s1:s2 for the selected combinations More... | |
EdbH1 | eRot |
definition of the rotation steps More... | |
Float_t | eRpeak |
coordinate peak acceptance More... | |
Float_t | eS0tx |
Float_t | eS0ty |
sigmas at 0 angle for the chi2 calculation More... | |
Float_t | eS0x |
Float_t | eS0y |
TObjArray | eSegCouples |
segment couples objects to fill couples format tree More... | |
Float_t | eShr1from |
Float_t | eShr1to |
limits in Shr for the peak search (ePat1) More... | |
Float_t | eShr2from |
Float_t | eShr2to |
limits in Shr for the peak search (ePat2) More... | |
TString | eSmoothKernel |
used to smooth histograms More... | |
TObjArray | eTracks |
tracks created with segments of eComb1, eComb2 More... | |
Float_t | eWbaseMin |
cut for the w of basetrack to accept it More... | |
float | eX0 |
Float_t | eXcell |
Float_t | eXpeak |
float | eY0 |
coordinates of the center of the zone (for the ePeakNT only) More... | |
Float_t | eYcell |
cell size (for example 50 microns) More... | |
Float_t | eYpeak |
peak position in X,Y More... | |
Float_t | eZ1from |
Float_t | eZ1peak |
Float_t | eZ1to |
limits in Z for the peak search (ePat1) More... | |
Float_t | eZ2from |
Float_t | eZ2peak |
peak position in Z More... | |
Float_t | eZ2to |
limits in Z for the peak search (ePat2) More... | |
new alignment class developed mainly for compton search
EdbPositionAlignment::EdbPositionAlignment | ( | ) |
|
virtual |
bool EdbPositionAlignment::ActivatePosTree | ( | const char * | name = "postree" | ) |
int EdbPositionAlignment::Align | ( | ) |
find the best alignment of the given zone
void EdbPositionAlignment::AlignWithTracks | ( | int | nang = 3 , |
int | npos = 0 |
||
) |
assuming that the combinations are found and tracks are reconstructed
correct DTX,DTY of the sides in respect of the tracks
int EdbPositionAlignment::DoubletsFilterOut | ( | bool | checkview = true | ) |
int EdbPositionAlignment::DoubletsFilterOutSide | ( | EdbPatCell2 & | pc, |
bool | checkview = true |
||
) |
assign flag = -10 for the duplicated segments
if(checkview) - do not remove close segments if them are in the same view
int EdbPositionAlignment::FillArrays | ( | EdbPattern & | p1, |
EdbPattern & | p2 | ||
) |
int EdbPositionAlignment::FillArrays | ( | TObjArray & | arr1, |
TObjArray & | arr2, | ||
float | xymin[2], | ||
float | xymax[2] | ||
) |
int EdbPositionAlignment::FillCombinations | ( | ) |
int EdbPositionAlignment::FillCombinations | ( | EdbPatCell2 & | pc1, |
EdbPatCell2 & | pc2, | ||
float | dx, | ||
float | dy, | ||
float | dtx, | ||
float | dty | ||
) |
the cells must be already filled
int EdbPositionAlignment::FillPosTree | ( | float | dz1, |
float | dz2, | ||
int | flag | ||
) |
void EdbPositionAlignment::FindCorrections | ( | EdbPattern & | pat1, |
EdbPattern & | pat2, | ||
float | DZ, | ||
bool | doShrink | ||
) |
find corrections assuming the patterns already closely aligned (linking case)
DZ is the distance between patterns(fixed)
void EdbPositionAlignment::FindDiff | ( | TObjArray & | arr1, |
TObjArray & | arr2, | ||
EdbPatCell2 & | pc1, | ||
EdbPatCell2 & | pc2, | ||
float & | dx, | ||
float & | dy, | ||
float & | dtx, | ||
float & | dty | ||
) |
void EdbPositionAlignment::FindDiff10 | ( | float & | dx, |
float & | dy, | ||
float & | dtx, | ||
float & | dty | ||
) |
void EdbPositionAlignment::FindDiff12 | ( | float & | dx, |
float & | dy, | ||
float & | dtx, | ||
float & | dty | ||
) |
void EdbPositionAlignment::FindDiff20 | ( | float & | dx, |
float & | dy, | ||
float & | dtx, | ||
float & | dty | ||
) |
int EdbPositionAlignment::Link | ( | ) |
output: hd - differential hist, should be already defined
use correction defined in ePC1, ePC2 if requested
dz1,dz2 offsets in Z,
output: hd - differential hist, should be already defined
void EdbPositionAlignment::PositionPlotA | ( | EdbH2 & | hd, |
float | DR = 0 , |
||
TObjArray * | arr1 = 0 , |
||
TObjArray * | arr2 = 0 |
||
) |
dz1,dz2 offsets in Z should be defined in ePC1, ePC2
output: hd - differential hist, should be already defined
fill arr1 and arr2 if requested, using dr
void EdbPositionAlignment::PrintStat | ( | ) |
void EdbPositionAlignment::PrintSummary | ( | ) |
void EdbPositionAlignment::RankCouples | ( | TObjArray & | arr1, |
TObjArray & | arr2, | ||
TObjArray & | arrtr | ||
) |
void EdbPositionAlignment::RankCouples0 | ( | ) |
construct basetracks only using the position information
void EdbPositionAlignment::RankCouplesFast | ( | TObjArray & | arrtr | ) |
int EdbPositionAlignment::ReadPosTree | ( | TTree * | tree, |
EdbPattern * | p = 0 , |
||
EdbPattern * | p1 = 0 , |
||
EdbPattern * | p2 = 0 , |
||
TEventList * | lst = 0 |
||
) |
|
inline |
|
inline |
void EdbPositionAlignment::SaveAsTree | ( | EdbPattern & | pat, |
const char * | name | ||
) |
|
static |
int EdbPositionAlignment::SelectNarrowPeakDXDY | ( | float | dr, |
EdbH2 & | hxy | ||
) |
assuming that the combinations are found
make the position plot and find the maximum,
select only the combinations belongs to the maximum cutting out the tails
int EdbPositionAlignment::SelectPeak | ( | EdbPattern & | p1, |
EdbPattern & | p2, | ||
float | dx, | ||
float | dy, | ||
float | dz1, | ||
float | dz2 | ||
) |
Select the couples formed the peak
assumed that the peak eXpeak, eYpeak is approximately found
Input: dz1,dz2 - for projection
dxMax, dYmax - for selection
Output p1,p2 with found segments
|
inline |
int EdbPositionAlignment::SelectZone | ( | float | min[2], |
float | max[2], | ||
TObjArray & | arr1, | ||
TObjArray & | arr2, | ||
float | maxDens | ||
) |
density unit is N/100/100 microns
int EdbPositionAlignment::SelectZoneSide | ( | EdbPatCell2 & | pc, |
float | min[2], | ||
float | max[2], | ||
TObjArray & | arr, | ||
int | nmax = kMaxInt |
||
) |
void EdbPositionAlignment::ShrinkageSelection | ( | float | dzbase | ) |
select the shrinkage
int EdbPositionAlignment::ShrinkageSelectionSide | ( | EdbPatCell2 & | pc1, |
EdbPatCell2 & | pc2, | ||
EdbH2 & | hshr, | ||
int | nstep, | ||
float | deltaShr | ||
) |
select the shrinkage for one side
int EdbPositionAlignment::SpotsFilterOut | ( | int | nmax | ) |
discard cells with nenries > nmax
int EdbPositionAlignment::WideSearchXY | ( | EdbPattern & | pat1, |
EdbPattern & | pat2, | ||
EdbH2 & | hxy, | ||
float | dz, | ||
float | xmin, | ||
float | xmax, | ||
float | ymin, | ||
float | ymax | ||
) |
wide prealignment (in case of the basetracks)
Int_t EdbPositionAlignment::WritePosTree | ( | ) |
|
inline |
|
inline |
EdbAffine2D* EdbPositionAlignment::eAff |
the found affine transformation (when applied to pattern1 gives pattern2 )
Float_t EdbPositionAlignment::eBinX |
Float_t EdbPositionAlignment::eBinY |
bin size for the differential hist (for example 5 microns)
Float_t EdbPositionAlignment::eChi2Max |
cut for the chi2 of the basetrack
TObjArray EdbPositionAlignment::eComb1 |
TObjArray EdbPositionAlignment::eComb2 |
array with the selected combinations of segments
Bool_t EdbPositionAlignment::eDoRot |
if true - perform the rotation selection
Float_t EdbPositionAlignment::eDTXmax |
Float_t EdbPositionAlignment::eDTXmin |
Float_t EdbPositionAlignment::eDTYmax |
max angular acceptance (ex: 0.15) for the coinsidences
Float_t EdbPositionAlignment::eDTYmin |
min angular difference for the dublets cutout
Float_t EdbPositionAlignment::eDXmin |
Float_t EdbPositionAlignment::eDYmin |
min position difference for the dublets cutout
EdbH2 EdbPositionAlignment::eHDZ |
histogram used for Z-selection
EdbH2 EdbPositionAlignment::eHpeak |
histogram used for peak selection
EdbH2 EdbPositionAlignment::eHShr1 |
histogram used for the shrinkage-selection
EdbH2 EdbPositionAlignment::eHShr2 |
histogram used for the shrinkage-selection
Int_t EdbPositionAlignment::eNpeak |
number of found combinations
Int_t EdbPositionAlignment::eNShr1step |
Int_t EdbPositionAlignment::eNShr2step |
number of steps for the Shr-selection
Int_t EdbPositionAlignment::eNZ1step |
Int_t EdbPositionAlignment::eNZ2step |
number of steps for the z-selection
EdbPatCell2 EdbPositionAlignment::ePC |
cells with the pointers to tracks
EdbPatCell2 EdbPositionAlignment::ePC1 |
EdbPatCell2 EdbPositionAlignment::ePC2 |
cells with the pointers to segments
TTree* EdbPositionAlignment::ePosTree |
optional: tree with s1:s2 for the selected combinations
EdbH1 EdbPositionAlignment::eRot |
definition of the rotation steps
Float_t EdbPositionAlignment::eRpeak |
coordinate peak acceptance
Float_t EdbPositionAlignment::eS0tx |
Float_t EdbPositionAlignment::eS0ty |
sigmas at 0 angle for the chi2 calculation
Float_t EdbPositionAlignment::eS0x |
Float_t EdbPositionAlignment::eS0y |
TObjArray EdbPositionAlignment::eSegCouples |
segment couples objects to fill couples format tree
Float_t EdbPositionAlignment::eShr1from |
Float_t EdbPositionAlignment::eShr1to |
limits in Shr for the peak search (ePat1)
Float_t EdbPositionAlignment::eShr2from |
Float_t EdbPositionAlignment::eShr2to |
limits in Shr for the peak search (ePat2)
TString EdbPositionAlignment::eSmoothKernel |
used to smooth histograms
TObjArray EdbPositionAlignment::eTracks |
tracks created with segments of eComb1, eComb2
Float_t EdbPositionAlignment::eWbaseMin |
cut for the w of basetrack to accept it
float EdbPositionAlignment::eX0 |
Float_t EdbPositionAlignment::eXcell |
Float_t EdbPositionAlignment::eXpeak |
float EdbPositionAlignment::eY0 |
coordinates of the center of the zone (for the ePeakNT only)
Float_t EdbPositionAlignment::eYcell |
cell size (for example 50 microns)
Float_t EdbPositionAlignment::eYpeak |
peak position in X,Y
Float_t EdbPositionAlignment::eZ1from |
Float_t EdbPositionAlignment::eZ1peak |
Float_t EdbPositionAlignment::eZ1to |
limits in Z for the peak search (ePat1)
Float_t EdbPositionAlignment::eZ2from |
Float_t EdbPositionAlignment::eZ2peak |
peak position in Z
Float_t EdbPositionAlignment::eZ2to |
limits in Z for the peak search (ePat2)