@@ -23,11 +23,28 @@ fatSolve(lutEntry_t &lutEntry, float pt = 0.1, float eta = 0.0, float mass = 0.1
2323 if (!trPtr) return false ;
2424
2525 lutEntry.valid = true ;
26- lutEntry.eff = fat.GetGoodHitProb (0 );
2726 lutEntry.itof = fat.GetGoodHitProb (itof);
2827 lutEntry.otof = fat.GetGoodHitProb (otof);
2928 for (int i = 0 ; i < 15 ; ++i) lutEntry.covm [i] = trPtr->GetCovariance ()[i];
30-
29+
30+ // define the efficiency
31+ auto totfake = 0 .;
32+ lutEntry.eff = 1 .;
33+ for (int i = 1 ; i < 20 ; ++i) {
34+ auto igoodhit = fat.GetGoodHitProb (i);
35+ if (igoodhit <= 0 . || i == itof || i == otof) continue ;
36+ lutEntry.eff *= igoodhit;
37+ auto pairfake = 0 .;
38+ for (int j = i + 1 ; j < 20 ; ++j) {
39+ auto jgoodhit = fat.GetGoodHitProb (j);
40+ if (jgoodhit <= 0 . || j == itof || j == otof) continue ;
41+ pairfake = (1 . - igoodhit) * (1 . - jgoodhit);
42+ break ;
43+ }
44+ totfake += pairfake;
45+ }
46+ lutEntry.eff2 = (1 . - totfake);
47+
3148 return true ;
3249}
3350
@@ -164,13 +181,15 @@ lutWrite(const char *filename = "lutCovm.dat", int pdg = 211, float field = 0.2,
164181 // printf(" --- fatSolve: error \n");
165182 lutEntry.valid = false ;
166183 lutEntry.eff = 0 .;
184+ lutEntry.eff2 = 0 .;
167185 for (int i = 0 ; i < 15 ; ++i)
168186 lutEntry.covm [i] = 0 .;
169187 }
170188 }
171189 else {
172190 // printf(" --- fwdSolve: pt = %f, eta = %f, mass = %f, field=%f \n", lutEntry.pt, lutEntry.eta, lutHeader.mass, lutHeader.field);
173191 lutEntry.eff = 1 .;
192+ lutEntry.eff2 = 1 .;
174193 bool retval = true ;
175194 if (usePara) {
176195 retval = fwdPara (lutEntry, lutEntry.pt , lutEntry.eta , lutHeader.mass , field);
0 commit comments