Back to home page

EIC code displayed by LXR

 
 

    


Warning, /firebird/firebird-ng/src/app/model/point-trajectory.group.spec.ts is written in an unsupported language. File is not indexed.

0001 // point-trajectory.component.spec.ts
0002 import { PointTrajectoryGroup, PointTrajectoryGroupFactory } from './point-trajectory.group';
0003 import { getEventGroupFactory } from './event-group';
0004 import {initGroupFactories} from "./default-group-init";
0005 
0006 
0007 describe('PointTrajectoryGroup', () => {
0008   beforeEach(()=>{
0009     initGroupFactories();
0010   });
0011 
0012   it('should be registered in the component factory registry', () => {
0013     const factory = getEventGroupFactory(PointTrajectoryGroup.type);
0014     expect(factory).toBeDefined();
0015     expect(factory instanceof PointTrajectoryGroupFactory).toBeTrue();
0016   });
0017 
0018   it('should create a component from a valid Dex object', () => {
0019     // Prepare a mock DEX object
0020     const dexObj = {
0021       name: 'CentralTrackSegments',
0022       type: 'PointTrajectory',
0023       origin: ['edm4eic::TrackPoint','edm4eic::TrackSegmentData'],
0024       paramColumns: ['theta','phi','qOverP','charge','pdg'],
0025       pointColumns: ['x','y','z','t','dx','dy','dz','dt'],
0026       trajectories: [
0027         {
0028           points: [
0029             [0, 0, 0, 100, 0.1, 0.1, 0.1, 0.0],
0030             [10, 20, 30, 120, 0.2, 0.2, 0.2, 0.1],
0031           ],
0032           params: [1.57, 3.14, -0.0005, -1, 11]
0033         },
0034         {
0035           points: [],
0036           params: []
0037         }
0038       ]
0039     };
0040 
0041     // Retrieve the factory and create the component
0042     const factory = getEventGroupFactory(PointTrajectoryGroup.type);
0043     expect(factory).toBeTruthy();
0044 
0045     const component = factory?.fromDexObject(dexObj) as PointTrajectoryGroup;
0046     expect(component).toBeDefined();
0047     expect(component.name).toBe('CentralTrackSegments');
0048     expect(component.paramColumns).toEqual(['theta','phi','qOverP','charge','pdg']);
0049     expect(component.pointColumns).toEqual(['x','y','z','t','dx','dy','dz','dt']);
0050 
0051     // Lines
0052     expect(component.trajectories.length).toBe(2);
0053     // First line
0054     const trajectory1 = component.trajectories[0];
0055     expect(trajectory1.points.length).toBe(2);
0056     expect(trajectory1.params).toEqual([1.57, 3.14, -0.0005, -1, 11]);
0057     // Second line
0058     const trajectory2 = component.trajectories[1];
0059     expect(trajectory2.points.length).toBe(0);
0060     expect(trajectory2.params.length).toBe(0);
0061   });
0062 
0063   it('should serialize back to Dex format via toDexObject()', () => {
0064     // Create a component manually
0065     const component = new PointTrajectoryGroup('MyTrajectory', 'testOrigin');
0066     component.paramColumns = ['alpha','beta'];
0067     component.pointColumns = ['x','y','z','t'];
0068     component.trajectories = [
0069       {
0070         points: [[1,2,3,10],[4,5,6,20]],
0071         params: [42, 99]
0072       }
0073     ];
0074 
0075     // Convert to Dex
0076     const dex = component.toDexObject();
0077 
0078     // Check top-level
0079     expect(dex.name).toBe('MyTrajectory');
0080     expect(dex.type).toBe('PointTrajectory');
0081     expect(dex.origin).toBe('testOrigin');
0082     expect(dex.paramColumns).toEqual(['alpha','beta']);
0083     expect(dex.pointColumns).toEqual(['x','y','z','t']);
0084 
0085     // Check lines
0086     expect(dex.trajectories.length).toBe(1);
0087     expect(dex.trajectories[0].points.length).toBe(2);
0088     expect(dex.trajectories[0].points[0]).toEqual([1,2,3,10]);
0089     expect(dex.trajectories[0].params).toEqual([42,99]);
0090   });
0091 
0092 });