Skip to content

Conversation

@jchismar
Copy link

@jchismar jchismar commented Feb 5, 2025

Creation of the quadruplet (T4) and pixelQuadruplet (pT4) objects. T4s are built from two T3s that share a common LS. T4s and pT4s are added as additional objects to track candidates, so the final TC collection includes (in order): pT5, pT4, pT3, T5, T4, pLS. T4s and pT4s can be enabled with compile time flags -t and -T (if only using the pT4 flag, T4s will be built but not included in TCs). Both objects use a DNN for fake rejection. The T4 DNN uses a multi-class architecture (similar to the T3 DNN) which classifies T4s as fake, real prompt, and real displaced. The pT4 DNN uses a binary classification architecture (similar to the T5 and pT3 DNNs).

@GNiendorf
Copy link
Member

GNiendorf commented Feb 7, 2025

I can't see at first glance any mistakes. What I would suggest is to make the same plots showing for abs(eta_1) < 1.1 or some value in the barrel the distribution of inner radii / outer radii from the actual features vector only.

features = np.array(features_list).T
eta_list = np.array(eta_list).T

So to make the plot directly from "features" in the cell below this and see if you still have good separation between real/fake. You could also remove the eta requirement and make the same plot for comparison. The DNN right now is claiming it doesn't see a use of the eta_1 feature (and nearly all of the other hit-based features), so I think that would help clarify where the issue is.

You could also remake the same plot after downsampling/etc. as a second check.

@GNiendorf
Copy link
Member

GNiendorf commented Feb 7, 2025

Or, retrain with just eta_1 and the radii variables and see if eta_1 is used by the DNN then. That would also help clarify things.

@GNiendorf
Copy link
Member

GNiendorf commented Feb 7, 2025

Like I said on the skype chat, if you look at your feature importances

Feature 18 importance: 0.0486
Feature 17 importance: 0.0409
Feature 8 importance: 0.0104
Feature 6 importance: 0.0045
Feature 16 importance: 0.0037
Feature 3 importance: 0.0019
Feature 14 importance: 0.0010
Feature 1 importance: 0.0000
Feature 10 importance: -0.0010
Feature 11 importance: -0.0013
Feature 4 importance: -0.0013
Feature 7 importance: -0.0023
Feature 2 importance: -0.0048
Feature 15 importance: -0.0057
Feature 0 importance: -0.0073
Feature 5 importance: -0.0094
Feature 12 importance: -0.0103
Feature 9 importance: -0.0229
Feature 13 importance: -0.0272

Nearly all of your features have ~0 importance or <0 importance. If you look at the T5 DNN feature importances:

Feature 21 importance: 0.3800
Feature 20 importance: 0.2052
Feature 0 importance: 0.2036
Feature 22 importance: 0.1572
Feature 17 importance: 0.1333
Feature 12 importance: 0.1323
Feature 13 importance: 0.1207
Feature 5 importance: 0.1142
Feature 2 importance: 0.0741
Feature 16 importance: 0.0638
Feature 15 importance: 0.0420
Feature 8 importance: 0.0402
Feature 9 importance: 0.0399
Feature 6 importance: 0.0305
Feature 7 importance: 0.0274
Feature 4 importance: 0.0269
Feature 3 importance: 0.0247
Feature 14 importance: 0.0162
Feature 10 importance: 0.0128
Feature 19 importance: 0.0117
Feature 11 importance: 0.0106
Feature 18 importance: 0.0089
Feature 1 importance: 0.0001

Or the T3 DNN importances:

Feature 5 importance: 0.0285
Feature 13 importance: 0.0258
Feature 0 importance: 0.0237
Feature 2 importance: 0.0187
Feature 9 importance: 0.0184
Feature 12 importance: 0.0161
Feature 3 importance: 0.0123
Feature 4 importance: 0.0098
Feature 11 importance: 0.0093
Feature 10 importance: 0.0089
Feature 7 importance: 0.0079
Feature 8 importance: 0.0056
Feature 6 importance: 0.0014
Feature 1 importance: 0.0000

most features are used. In both cases eta_1 (first eta value, feature 0) is the third most important feature. So I think narrowing the search there will help solve this.

Comment on lines 2319 to 2079
constexpr int p08_occupancy_matrix[4][4] = {
{5000, 5000, 5000, 5000}, // category 0
{5000, 5000, 5000, 5000}, // category 1
{5000, 5000, 5000, 5000}, // category 2
{5000, 5000, 5000, 5000} // category 3
};
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suspect the results shown today were truncated in some cases.
I suggest to merge #148 to moderate the memory blowup and increase the above by x10 and redo the inclusive T3 input test

Copy link
Member

@GNiendorf GNiendorf Feb 28, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You will need to add similar logic to the Quadruplet occupancy kernel here if you want to increase these 10x btw, since I only incorporated it into the existing objects. Should be only a few lines though that you need to add. See my change for the T5 occupancies as a reference.

@jchismar jchismar force-pushed the CMSSW_14_1_0_pre3_LST_X_LSTCore_realfiles_T4_jade branch from b6fc621 to 722178e Compare June 30, 2025 01:08
@jchismar jchismar changed the base branch from CMSSW_14_1_0_pre3_LST_X_LSTCore_realfiles_batch1_devel to master June 30, 2025 01:09
@jchismar jchismar changed the title T4 Creation + DNN Draft PR T4 and pT4 Creation Draft PR Jul 10, 2025
@jchismar jchismar closed this Jul 28, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants