Skip to content
Snippets Groups Projects

Draft: FPGATrackSim: Add FPGATrackSimGNN as GNN Pipeline to FPGATrackSim

Closed Jared Dynes Burleson requested to merge jaburles/athena:FPGATrackSimGNN into main

FPGATrackSim implementation of GNN-based pattern recognition.

This is an ongoing effort to implement each piece of the GNNPatternRecoTool as a configurable option for pattern recognition within FPGATrackSim. Each step of the GNN-based pattern recognition is isolated in it's own tool and it's progress is tracked through the following checklist.

  • FlagConfiguration: Not a tool, but add flag configuration capabilities for when running the python script in athena.
  • GraphHitSelectorTool: Converts FPGATrackSimHit to FPGATrackSimGNNHit (strip SPs with both cluster information).
  • GraphConstructionTool: Builds edges between hits using user-configured tool, default is doublet module map with minmax tolerance.
  • EdgeClassifierTool: Score edges using interaction network graph neural network inferencing.
  • RoadMakerTool: Use ConnectedComponents to build list of FPGATrackSimGNNHits chained together, then find the original FPGATrackSimHits and make a vector as each FPGATrackSimRoads.
  • Add proper header information and detailed comments to match athena-etiquette.
Edited by Jared Dynes Burleson

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • 1 #include "FPGATrackSimGNNRoadUnionTool.h"
  • 45 // Currently only Doublet Module Map with minmax cuts exist, but others can be implemented later on as desired
    46
    47 if(m_moduleMapType == "doublet") {
    48 loadDoubletModuleMap();
    49 getDoubletEdges(hits, edges);
    50 }
    51 else {
    52 ATH_MSG_FATAL("ERROR! Only Doublet Module Map for GNN Graph Construction is implemented currently.");
    53 }
    54 }
    55
    56 void FPGATrackSimGraphConstructionTool::loadDoubletModuleMap()
    57 {
    58 // Store the module map as vectors for each TBranch in the ROOT file
    59 if(m_moduleMapPath == "") { ATH_MSG_FATAL("ERROR! No Module Map provided. Please provide a valid path to a ROOT file."); }
    60 TFile* file = TFile::Open(m_moduleMapPath.value().c_str());
  • 69 69
    70 70 // --- Unmapped Location ---
    71 71 void setIdentifier(unsigned int v) { m_identifier = v; } // 32 bit (short) module identifier
    72 void setIdentifier64(unsigned long int v) {m_identifier64 = v; } // 64 bit (long) module identifier
    • we should really aim to not change the core base classes. Is this really needed? If so, please update the ClassDef in this file for backwards compatability.

    • It is needed temporarily. Our current module map uses the 64 bit module_id. I have tried to find a list of modules that has both the 32 bit and 64 bit module id (which I can then replace the 64 bit module id with the 32 bit module id), but I have not found it.

      In the future, we will do a re-"training" of the module map using the output from the DataPrepAlg in which the 32 bit module ids are going to be fine, but for now I need to keep the 64 bit module ids, unless we have a resource that I can use to manually convert them in the module map.

    • This is even less of a good idea then if it's temporary because any wrappers that use this will then have these extra unused variables lying around. How long before your retraining is done?

    • I don't have any idea on the timeline of the training. This hasn't begun. This would require full graphs from FPGATrackSim as well, something that we don't have yet. And the event generation and training would take a long time. It would be easier if we just had a tool to convert the 64 bit module ID to the 32 bit module ID, then I could modify the ROOT file and remove this extra variable.

    • I don't know how the two IDs are calculated. We can ask offline experts. This is far from ideal. In the meantime, please at least update the ClassDef

    • Please register or sign in to reply
  • added 1 commit

    • be65e3ed - Replace CSV output with ROOT using THistSvc

    Compare with previous version

  • added 295 commits

    Compare with previous version

  • added 1 commit

    • a3726f8f - cleaning up code, adding header comments, removing redundant includes

    Compare with previous version

  • Jared Dynes Burleson marked the checklist item Add proper header information and detailed comments to match athena-etiquette. as completed

    marked the checklist item Add proper header information and detailed comments to match athena-etiquette. as completed

  • added 1 commit

    • 81ed9a87 - Fixed issue where edge_deta was not setting

    Compare with previous version

  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Please register or sign in to reply
    Loading