Skip to content

Phys/DaVinciFilters:

Vanya Belyaev requested to merge vanya-substitute-pids-v1 into run2-patches

Phys/DaVinciFilters:

  • fix a stupid bug in FitDecayTrees::finalize
  • add some helper prints/counts/statistics to SubstitutePID*-machinery. With new code it is much easier to debug and much easier to identify/locate problems with substitutions and the decay descriptors. The final output table allows to inspect all problems in rather intuitive way, including the order of single substitutions. E.g. in this table one can immediately identify the "wrong/non-used" substitution.
ToolSvc.LoKi::V...SUCCESS  #WARNINGS   = 3        Message = 'fit(): failure from fit [StdLooseDiMuon]'
ququ.Substitute...  ERROR SubstitutePIDTool:: NO substitutions         B0 :  (B0 -> chi_c1(1P) K+ X-)     StatusCode=FAILURE
ququ.Substitute...   INFO  # substitutions         B0 :  (B0 -> chi_c1(1P) K+ X-)     / 0
ququ.Substitute...   INFO  # substitutions         B+ :  (B_s0 -> chi_c1(1P) K+ X-)   / 178
ququ.Substitute...   INFO  # substitutions  Lambda_b0 :  (Xb -> chi_c1(1P) K+ X-)     / 178
ququ.Substitute...   INFO  # substitutions        pi- :  (Xb -> chi_c1(1P) X+ ^(K-))  / 178
ququ.Substitute...   INFO  # substitutions        pi+ :  (Xb -> chi_c1(1P) ^(K+) X-)  / 178
ququ.Substitute...   INFO  # substitutions chi_c2(1P) :  (Xb -> ^(chi_c1(1P)) X+ X-)  / 178
ququ.Substitute...   INFO Single transform:           (B+ -> (chi_c1(1P) -> (J/psi(1S) -> mu+ mu-) gamma) K- K+)  :  (Lambda_b0 -> (chi_c1(1P) -> (J/psi(1S) -> mu+ mu-) gamma) K- K+)    / 178
ququ.Substitute...   INFO Single transform:         (B_s0 -> (chi_c1(1P) -> (J/psi(1S) -> mu+ mu-) gamma) K- K+)  :  (B+ -> (chi_c1(1P) -> (J/psi(1S) -> mu+ mu-) gamma) K- K+)           / 178
ququ.Substitute...   INFO Single transform:    (Lambda_b0 -> (chi_c1(1P) -> (J/psi(1S) -> mu+ mu-) gamma) K- K+)  :  (Lambda_b0 -> (chi_c1(1P) -> (J/psi(1S) -> mu+ mu-) gamma) pi- K+)   / 178
ququ.Substitute...   INFO Single transform:   (Lambda_b0 -> (chi_c1(1P) -> (J/psi(1S) -> mu+ mu-) gamma) pi- K+)  :  (Lambda_b0 -> (chi_c1(1P) -> (J/psi(1S) -> mu+ mu-) gamma) pi- pi+)  / 178
ququ.Substitute...   INFO Single transform:  (Lambda_b0 -> (chi_c1(1P) -> (J/psi(1S) -> mu+ mu-) gamma) pi- pi+)  :  (Lambda_b0 -> (chi_c2(1P) -> (J/psi(1S) -> mu+ mu-) gamma) pi- pi+)  / 178
ququ.Substitute...   INFO Final  transform:         (B_s0 -> (chi_c1(1P) -> (J/psi(1S) -> mu+ mu-) gamma) K- K+)  :  (Lambda_b0 -> (chi_c2(1P) -> (J/psi(1S) -> mu+ mu-) gamma) pi- pi+)  / 178
ququ.Substitute...SUCCESS Number of counters : 3
 |    Counter                                      |     #     |    sum     | mean/eff^* | rms/err^*  |     min     |     max     |
 | "#substituted"                                  |       178 |        890 |     5.0000 |     0.0000 |      5.0000 |      5.0000 |
 | "Substituted"                                   |       178 |        178 |     1.0000 |     0.0000 |      1.0000 |      1.0000 |
 | "Substitutions"                                 |       178 |        890 |     5.0000 |     0.0000 |      5.0000 |      5.0000 |

I've intensively tested it with SubstitutePID-algorithm and everything works for me nicely. Since I know nothing about TupleTools, I'was not able to test it with some TupleTools, but I hope somebody can do it easily. Or, if somebody show me an easy working example how to run TupleTools with SubstitutePIDTool - I probably can do it myself. @pkoppenb

Merge request reports