-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMITConversionUtilities.cc
59 lines (43 loc) · 1.62 KB
/
MITConversionUtilities.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include "MITConversionUtilities.h"
#include "CMS2.h"
#include "TMath.h"
bool isMITConversion(unsigned int elidx,
int nWrongHitsMax,
float probMin,
float dlMin,
bool matchCTF,
bool requireArbitratedMerged) {
unsigned int nconvs = cms2.convs_isConverted().size();
if(nconvs == 0)
return false;
bool isGoodConversion = false;
for(unsigned int iconv = 0; iconv < nconvs; iconv++) {
bool conversionMatchFound = false;
for(unsigned int itk = 0; itk < cms2.convs_tkidx()[iconv].size(); itk++) {
if(cms2.convs_tkalgo()[iconv][itk] == 29 && cms2.convs_tkidx()[iconv][itk] == cms2.els_gsftrkidx()[elidx])
conversionMatchFound = true;
if(matchCTF) {
if(cms2.convs_tkalgo()[iconv][itk] > 3 && cms2.convs_tkalgo()[iconv][itk] < 14 && cms2.convs_tkalgo()[iconv][itk] != 12 && cms2.convs_tkidx()[iconv][itk] == cms2.els_trkidx()[elidx])
conversionMatchFound = true;
}
if(conversionMatchFound)
break;
}
if(conversionMatchFound==false)
continue;
if( TMath::Prob( cms2.convs_chi2()[iconv], (Int_t)cms2.convs_ndof()[iconv] ) > probMin && cms2.convs_dl()[iconv] > dlMin ) isGoodConversion = true;
if(requireArbitratedMerged) {
if(cms2.convs_quality()[iconv] & 4)
isGoodConversion = true;
else
isGoodConversion = false;
}
for(unsigned int j = 0; j < cms2.convs_nHitsBeforeVtx()[iconv].size(); j++) {
if(cms2.convs_nHitsBeforeVtx()[iconv][j] > nWrongHitsMax)
isGoodConversion = false;
}
if(isGoodConversion)
break;
}//loop over convserions
return isGoodConversion;
}