* *
* * * *C----------------------------------------------------------------------- PROGRAM EXAMPLE_ABCFIT C C THIS EXAMPLE PROGRAM SHOWS A SERIES OF DIFFERENT ABCFIT C CALLS TO ILLUSTRATE THE USE AND POSSIBILITIES OF THE PACKAGE C C----------------------------------------------------------------------- implicit none C------------------ABCFIT INCLUDE FILE(S)------------------ #include "abcfit_setup.inc" #include "abcfit.inc" #include "abcfit_bmatrix.inc" C--------------INPUT PARAMETERS FOR ABCFIT-------------- INTEGER NJET,ITF,ITYPP,ITEVOL,NUP REAL M0(3),G0(3),CVAL(4),P_REC(4,NPARTICLES) C--------------OUTPUT PARAMETERS FOR ABCFIT------------- INTEGER NDF,IERR REAL CHI2T,P_FIT(4,NPARTICLES) C--------------INPUT PARAMETERS FOR CY02PM-------------- INTEGER LIST(NPARTICLES,2) C--------------OUTPUT PARAMETERS FOR CY02PM------------- INTEGER NDIM REAL ERRMTR(PLEN,PLEN),PULL(PLEN),COVP(4*NPARTICLES,4*NPARTICLES) & ,COVM(2,2) C------------------------------------------------------- C INTERNAL PARAMETERS INTEGER I,J,K,PARIN(7) REAL SUM(4) C---------PARAMETER INITIALISATION FOR ABCFIT----------- C DON'T CALL AIBI_EVOL_USER TO GET PARAMETERISATION C USE AIBI_EVOL FROM ABCFIT TO GIVE PARAMETRISATION DATA DATA USER_AIBI_EVOL /.FALSE./ C---------PARAMETER INITIALISATION FOR CY02PM----------- C LIST SPECIFIES HOW TO COMBINE PARTICLES IN THE CALCULATION C OF THE MASS-COVARIANCE MATRIX. (ZERO TERMINATES A ROW) DATA LIST /1,2,0,0,0,0, ! MASS1 IS MADE FROM 1+2 & 3,4,0,0,0,0/ ! MASS2 IS MADE FROM 3+4 DATA Eindex /1,2,0,0,0,0, ! MASS1 IS MADE FROM 1+2 & 3,4,0,0,0,0, ! MASS2 IS MADE FROM 3+4 & 0,0,0,0,0,0/ ! MASS2 IS MADE FROM 3+4 C------------------------------------------------------- C C START OF CODE -- FIRST FILL AN ARRAY OF INPUT MOMENTA C USED IN THE FOLLOWING FOR ALL EXAMPLES... C C PARTICLE ONE P_REC(1,1)=2.67377 ! PX P_REC(2,1)=13.5278 ! PY P_REC(3,1)=-14.7699 ! PZ P_REC(4,1)=21.5475 ! E C PARTICLE TWO P_REC(1,2)=-36.0753 ! PX P_REC(2,2)=-33.4628 ! PY P_REC(3,2)=32.5065 ! PZ P_REC(4,2)=64.3082 ! E C PARTICLE THREE P_REC(1,3)=35.4921 ! PX P_REC(2,3)=-19.6482 ! PY P_REC(3,3)=-32.833 ! PZ P_REC(4,3)=52.1897 ! E C PARTICLE FOUR P_REC(1,4)=-2.09058 ! PX P_REC(2,4)=39.5834 ! PY P_REC(3,4)=15.0964 ! PZ P_REC(4,4)=42.416 ! E C PARTICLE FIVE -- YES! WHY NOT? WHEN ABCFIT CAN DO IT! C THIS COULD A THREE-JET LIKE W DECAY.... P_REC(1,5)=-2.13801 ! PX P_REC(2,5)=18.2512 ! PY P_REC(3,5)=7.74521 ! PZ P_REC(4,5)=22.207 ! E C C========================================================================= C C DONE -- NOW THE EXAMPLES C C LIST OF EXAMPLES: C C EXAMPLE 1: QQQQ (NJET=4, NUP=0, ALEPH PAR, 4C) C EXAMPLE 2: QQQQ (NJET=4, NUP=0, ALEPH PAR, 4C, FIXED JET MASSES) C EXAMPLE 3: QQQQ (NJET=4, NUP=0, DELPHI PAR, 5C + 3 TIMES MINDEX) C EXAMPLE 4: QQQQ (NJET=4, NUP=0, DELPHI PAR, 6C (ZZ CONSTRAINTS) WITH ALPHAS) C EXAMPLE 5: LLQQ (NJET=4, NUP=0, DELPHI PAR, 5C (ONE Z CONSTRAINT)) C EXAMPLE 6: QQLV (NJET=4, NUP=1, DELPHI PAR, 1C, RECO BINNING) C EXAMPLE 7: QQLV (NJET=4, NUP=1, DELPHI PAR, 2C("EQUAL ENERGY"), TRUE BINNING) C EXAMPLE 8: QQLV (NJET=4, NUP=1, DELPHI PAR, 2C("EQUAL MASS"), TRUE BINNING) C EXAMPLE 9: QGQLV (NJET=5, NUP=1, DELPHI PAR, 1C, RECO BINNING) C EXAMPLE 10: (Q+Q)LV (NJET=3, NUP=1, DELPHI PAR, 1C, RECO BINNING) C EXAMPLE 11: (Q+Q)LV (NJET=3, NUP=1, DELPHI PAR, MINDEX, 2C, RECO BINNING) C EXAMPLE 12: QQGAMMA (NJET=2, NUP=0, DELPHI PAR, 3C (NO PZ), RECO BINNING) C C========================================================================= C C EXAMPLE 1: QQQQ (NJET=4, NUP=0, ALEPH PAR, 4C) C C SET NUMBER OF UNMEASURED PARTICLES LOCATED AT THE END OF P_REC ARRAY C NUP=1 C C SET TOTAL NUMBER OF PARTICLES C NJET=4 C C SET VALUES OF FOUR-MOMENTUM CONSTRAINS FOR THE FITTED SYSTEM C CVAL(1)=0. ! SUM(PX)=CVAL(1) CVAL(2)=0. ! SUM(PY=CVAL(2) CVAL(3)=0 ! SUM(PZ=CVAL(3) CVAL(4)=183. ! SUM(E)=ETOT=CVAL(4) C C SET VALUES OF MASS CONSTRAINTS (IF USED -- WE SET THEM ANYWAY) C DO I=1,3 M0(I)=80.5 G0(I)=2.7 ENDDO c P_REC(1,6)=0.001 ! PX c P_REC(2,6)=0.001 ! PY c P_REC(3,6)=0.001 ! PZ c P_REC(4,6)=0.05 C C WHICH CONSTRAINS TO USE?? C ITF=8 ! 4C=4NDF fit C C WHICH KIND OF PARAMETRISATION? WE TRY ALEPH (DELPHI IS RECOMMENDED) C AND HAVE FULL CORRECTION (BOTH TRANSVERSE AND LONGITUDINAL) AND C THE FITTED JET MASSES SCALE WITH FITTED MOMENTA C C +---- SCALED JET-MASSES=0 (OLD MATHKINE WAY) C |+--- FULL CORRECTION=0 C ||+-- ALEPH=0 C VVV DO I=1,NJET PARIN(I)=1 ENDDO C C WHICH PARAMETRISATION DATA TO USE? DO WE WANT NON-DIAGONAL C COVARIANCE? TRUE OR RECO BINNING? WHICH *TAG* SHOULD WE USE? C HERE WE DECIDE TO USE A FILE WITH TAG=1, TRUE BINNING AND DIAGONAL C COVARIANCE MATRIX C C +---- TRUE=1 C |+--- DIAGONAL=0 C ||+-- TAG=1 C VVV ITEVOL=001 C C WITH THESE VALUES OF ITYPP AND ITEVOL ABCFIT WILL LOOK FOR THE C PARAMETRISATION FILES NAMED: C C AIBI_EVOL_0000_001.DAT (RECO BINNING FILE -- C NEEDED TO START TRUE FIT) C C AIBI_EVOL_0000_101.DAT (TRUE BINNING FILE) C C _BUT_ NOW WE ARE READY TO CALL ABCFIT :-) C P_rec( 1,1)= -31.99615 P_rec( 2,1)= -0.2356567 P_rec( 3,1)= 24.40369 P_rec( 4,1)= 44.36548 P_rec( 1,2)= 60.87659 P_rec( 2,2)= -16.85388 P_rec( 3,2)= 31.44922 P_rec( 4,2)= 72.15112 P_rec( 1,3)= -26.79729 P_rec( 2,3)= 14.52361 P_rec( 3,3)= -31.28325 P_rec( 4,3)= 43.67712 P_rec( 1,4)= -2.083147 P_rec( 2,4)= 2.565930 P_rec( 3,4)= -24.56966 P_rec( 4,4)= 24.79096 CALL ABCFIT(NJET,NUP,P_REC,ITF,CVAL,M0,G0,PARIN,ITEVOL,P_FIT,CHI2T & ,NDF,IERR) C C SO, WHAT DID WE GET? C PRINT*,' ' PRINT*,'*****************************************************' PRINT*,'** EXAMPLE 1 **' PRINT*,'*****************************************************' PRINT*,' ' CALL PRINTOUT(NJET,LIST,IERR,NDF,CHI2T,P_FIT) PRINT*,' ' PRINT*,' ' PRINT*,'*****************************************************' PRINT*,'** EXAMPLE 1 **' PRINT*,'*****************************************************' PRINT*,' ' nup=0 NJET=5 IF (P_REC(4,1)+P_REC(4,2)-P_REC(4,3)-P_REC(4,4).GT.0) THEN EINDEX(1,1)=1 EINDEX(2,1)=2 EINDEX(3,1)=0 EINDEX(1,2)=3 EINDEX(2,2)=4 EINDEX(3,2)=5 EINDEX(4,2)=0 LIST(1,1)=1 LIST(2,1)=2 LIST(3,1)=0 LIST(1,2)=3 LIST(2,2)=4 LIST(3,2)=5 LIST(4,2)=0 ELSE EINDEX(1,1)=1 EINDEX(2,1)=2 EINDEX(3,1)=5 EINDEX(4,1)=0 EINDEX(1,2)=3 EINDEX(2,2)=4 EINDEX(3,2)=0 EINDEX(4,2)=0 LIST(1,1)=1 LIST(2,1)=2 LIST(3,1)=5 LIST(4,1)=0 LIST(1,2)=3 LIST(2,2)=4 LIST(3,2)=0 LIST(4,2)=0 ENDIF PRINT*,'EINDEX',((EINDEX(I,J),I=1,3),J=1,2) PRINT*,' ' do i=1,6 parin(i)=10 enddo P_REC(1,5)=0.00001 ! PX P_REC(2,5)=0.00001 ! PY P_REC(3,5)=0.00001 ! PZ P_REC(4,5)=abs(p_rec(4,1)+p_rec(4,2)-p_rec(4,3)-p_rec(4,4)) I=4 j=1 c P_REC(4,5)=SQRT((P_REC(1,i)**2+P_REC(2,i)**2+P_REC(3,i)**2) c & /(P_REC(1,i)**2+P_REC(3,i)**2)) c P_REC(1,5)=dble(j)*P_REC(3,i)*P_REC(4,5) c P_REC(2,5)=0.0 c P_REC(3,5)=-dble(j)*P_REC(1,i)*P_REC(4,5) c p_rec(4,5)=sqrt(P_REC(1,5)**2+P_REC(2,5)**2+P_REC(3,5)**2) PRINT*,' ' PRINT*,'*****************************************************' PRINT*,'** SOLUTION **' PRINT*,'*****************************************************' PRINT*,' ' PRINT*,'INPUT' EINDEX(1,1)=1 EINDEX(2,1)=2 EINDEX(3,1)=0 EINDEX(4,1)=0 EINDEX(1,2)=3 EINDEX(2,2)=4 EINDEX(3,2)=5 EINDEX(4,2)=6 LIST(1,1)=1 LIST(2,1)=2 LIST(3,1)=0 LIST(4,1)=0 LIST(1,2)=3 LIST(2,2)=4 LIST(3,2)=5 LIST(4,2)=6 CALL PRINTOUT(NJET,LIST,IERR,NDF,0,P_REC) CALL ABCFITKERNEL(0,NJET,NUP,P_REC,parin,ITF,CVAL,M0,G0,p_rec & ,ITEVOL,P_FIT,CHI2T,NDF,IERR) CALL PRINTOUT(NJET,LIST,IERR,NDF,CHI2T,P_FIT) PRINT*,' ' PRINT*,' ' PRINT*,'*****************************************************' PRINT*,'** SOLUTION **' PRINT*,'*****************************************************' PRINT*,' ' DO J=1,4 P_FIT(J,I)=P_FIT(J,I)+P_FIT(J,NJET) ENDDO NJET=4 nup=1 EINDEX(3,1)=0 EINDEX(1,2)=3 EINDEX(2,2)=4 EINDEX(3,2)=0 do i=1,6 parin(i)=1 enddo itf=8 PRINT*,' ' PRINT*,'=====================================================' PRINT*,'== REFIT ==' PRINT*,'=====================================================' PRINT*,' ' PRINT*,'=============== INPUT REFIT =========================' list(3,1)=0 list(1,2)=3 list(2,2)=4 list(3,2)=0 CALL PRINTOUT(NJET,LIST,IERR,NDF,CHI2T,P_FIT) CALL ABCFITKERNEL(1,NJET,NUP,p_rec,parin,ITF,CVAL,M0,G0,p_rec & ,ITEVOL,P_FIT,CHI2T,NDF,IERR) PRINT*,'=============== OUTPUT REFIT =========================' CALL PRINTOUT(NJET,LIST,IERR,NDF,CHI2T,P_FIT) PRINT*,' ' PRINT*,'=====================================================' PRINT*,'== END OF EXAMPLE ==' PRINT*,'=====================================================' PRINT*,' ' STOP C C========================================================================= C C EXAMPLE 2: QQQQ (NJET=4, NUP=0, ALEPH PAR, 4C, FIXED JET MASSES) C C HERE WE DO ALMOST THE SAME AS FOR 1), BUT HAVE FIXED JET-MASSES (_NOT_ C JET-JET MASSES!!!!!). FOR THIS WE ONLY NEED TO CHANGE ITYPP. C C WHICH KIND OF PARAMETRISATION? WE TRY ALEPH (DELPHI IS RECOMMENDED) C AND HAVE FULL CORRECTION (BOTH TRANSVERSE AND LONGITUDINAL) AND C THE FITTED JET MASSES ARE _FIXED_ C C +---- FIXED JET-MASSES=1 C |+--- FULL CORRECTION=0 C ||+-- ALEPH=0 C VVV ITYPP=100 C C NOW WE ARE READY TO CALL ABCFIT :-) C CALL ABCFIT(NJET,NUP,P_REC,ITF,CVAL,M0,G0,ITYPP,ITEVOL,P_FIT,CHI2T & ,NDF,IERR) C C SO, WHAT DID WE GET? C PRINT*,' ' PRINT*,'*****************************************************' PRINT*,'** EXAMPLE 2 **' PRINT*,'*****************************************************' PRINT*,' ' CALL PRINTOUT(NJET,LIST,IERR,NDF,CHI2T,P_FIT) PRINT*,' ' PRINT*,'=====================================================' PRINT*,'== END OF EXAMPLE ==' PRINT*,'=====================================================' PRINT*,' ' C C========================================================================= C C EXAMPLE 3: QQQQ (NJET=4, NUP=0, DELPHI PAR, 5C + 3 TIMES MINDEX) C C IN THIS EXAMPLE WE ILLUSTRATE THE USE OF "MASS-CONSTRAIN" REDEFINITION C TO GIVE US THE THREE MASS COMBINATIONS, RATHER THAN CHANGING THE PARTICLE C ORDER IN THE ABCFIT CALL. MOST OF ABCFIT INPUT VARIABLES ARE THE SAME C AS FOR 2). C C WHICH KIND OF PARAMETRISATION? WE TRY DELPHI (RECOMMENDED) C AND HAVE FULL CORRECTION (BOTH TRANSVERSE AND LONGITUDINAL) AND C THE FITTED JET MASSES SCALE WITH FITTED MOMENTA C C +---- SCALED JET-MASSES=0 (OLD MATHKINE WAY) C |+--- FULL CORRECTION=0 C ||+-- DELPHI=0 C VVV ITYPP=001 C C WHICH CONSTRAINS TO USE?? C ITF=4 ! 4C=4NDF fit C C NOW WE ARE READY TO CALL ABCFIT :-) C CALL ABCFIT(NJET,NUP,P_REC,ITF,CVAL,M0,G0,ITYPP,ITEVOL,P_FIT,CHI2T & ,NDF,IERR) C C SO, WHAT DID WE GET? C PRINT*,' ' PRINT*,'*****************************************************' PRINT*,'** EXAMPLE 3 **' PRINT*,'*****************************************************' PRINT*,' ' CALL PRINTOUT(NJET,LIST,IERR,NDF,CHI2T,P_FIT) C C NOW CHANGE THE MASS CONSTRAIN SETUP: USE MINDEX (LOCATED IN C "abcfit_bmatrix.inc" C MINDEX(1,1)=1 ! MASS1 MINDEX(2,1)=3 ! MASS1 MINDEX(1,2)=2 ! MASS2 MINDEX(2,2)=4 ! MASS2 C C NOW WE ARE READY TO CALL ABCFIT :-) C CALL ABCFIT(NJET,NUP,P_REC,ITF,CVAL,M0,G0,ITYPP,ITEVOL,P_FIT,CHI2T & ,NDF,IERR) C C SO, WHAT DID WE GET? C CALL PRINTOUT(NJET,MINDEX,IERR,NDF,CHI2T,P_FIT) C C NOW CHANGE THE MASS CONSTRAIN SETUP: USE MINDEX (LOCATED IN C "abcfit_bmatrix.inc" C MINDEX(1,1)=1 ! MASS1 MINDEX(2,1)=4 ! MASS1 MINDEX(1,2)=2 ! MASS2 MINDEX(2,2)=3 ! MASS2 C C NOW WE ARE READY TO CALL ABCFIT :-) C CALL ABCFIT(NJET,NUP,P_REC,ITF,CVAL,M0,G0,ITYPP,ITEVOL,P_FIT,CHI2T & ,NDF,IERR) C C SO, WHAT DID WE GET? C CALL PRINTOUT(NJET,MINDEX,IERR,NDF,CHI2T,P_FIT) C C NOW RESET THE MASS CONSTRAIN SETUP: USE MINDEX (LOCATED IN C "abcfit_bmatrix.inc" C MINDEX(1,1)=1 ! MASS1 MINDEX(2,1)=2 ! MASS1 MINDEX(1,2)=3 ! MASS2 MINDEX(2,2)=4 ! MASS2 C PRINT*,' ' PRINT*,'=====================================================' PRINT*,'== END OF EXAMPLE ==' PRINT*,'=====================================================' PRINT*,' ' C C========================================================================= C C EXAMPLE 4: QQQQ (NJET=4, NUP=0, DELPHI PAR, 6C (ZZ CONSTRAINTS) WITH ALPHAS) C C AGAIN: WE ONLY CHANGE PARAMETERS WITH RESPECT TO 3). C C SET VALUES OF MASS CONSTRAINTS C DO I=1,2 M0(I)=91.2 G0(I)=2.5 ENDDO C C WHICH CONSTRAINS TO USE?? C C +--- ALPHAS FOLLOW GAUSSIAN=0 C |+-- CHOICE OF CONSTRAINTS C VV ITF=07 ! 6C=6NDF WITH C ALPHA(1,2)*M(1,2)=M0(1) AND ALPHA(3,4)*M(3,4)=M0(2) C C NOW WE ARE READY TO CALL ABCFIT :-) C CALL ABCFIT(NJET,NUP,P_REC,ITF,CVAL,M0,G0,ITYPP,ITEVOL,P_FIT,CHI2T & ,NDF,IERR) C C SO, WHAT DID WE GET? C PRINT*,' ' PRINT*,'*****************************************************' PRINT*,'** EXAMPLE 4 **' PRINT*,'*****************************************************' PRINT*,' ' CALL PRINTOUT(NJET,MINDEX,IERR,NDF,CHI2T,P_FIT) PRINT*,' ' PRINT*,'=====================================================' PRINT*,'== END OF EXAMPLE ==' PRINT*,'=====================================================' PRINT*,' ' C C========================================================================= C C EXAMPLE 5: LLQQ (NJET=4, NUP=0, DELPHI PAR, 5C (ONE Z CONSTRAINT)) C C THIS EXAMPLE COULD BE FOR A ZH EVENT... C AGAIN: WE ONLY CHANGE PARAMETERS WITH RESPECT TO 4). C C C WHICH CONSTRAINS TO USE?? C C +-- CHOICE OF CONSTRAINTS C V ITF= 2 ! 5C=5NDF WITH M(1,2)=M0(1) C C NOW WE ARE READY TO CALL ABCFIT :-) C CALL ABCFIT(NJET,NUP,P_REC,ITF,CVAL,M0,G0,ITYPP,ITEVOL,P_FIT,CHI2T & ,NDF,IERR) C C SO, WHAT DID WE GET? C PRINT*,' ' PRINT*,'*****************************************************' PRINT*,'** EXAMPLE 5 **' PRINT*,'*****************************************************' PRINT*,' ' CALL PRINTOUT(NJET,MINDEX,IERR,NDF,CHI2T,P_FIT) PRINT*,' ' PRINT*,'=====================================================' PRINT*,'== END OF EXAMPLE ==' PRINT*,'=====================================================' PRINT*,' ' C C========================================================================= C C EXAMPLE 6: QQLV (NJET=4, NUP=1, DELPHI PAR, 1C, RECO BINNING) C C AGAIN: WE ONLY CHANGE PARAMETERS WITH RESPECT TO 5). C C THE NEUTRINO IS AN UNMEASURED PARTICLE AND SHOULD ONLY ENTER C IN CONTRAINT FUNCTION -- MUST BE LAST PARTICLE IN ARRAY! C C THE *CORRECT* STARTING GUESS FOR THE NEUTRINO IS THE MISSING C MOMENTUM AND MASSLESS!!!!: C DO I=1,3 P_REC(I,4)=0-(P_REC(I,1)+P_REC(I,2)+P_REC(I,3)) ! NEUTRINO ENDDO P_REC(4,4)=SQRT(P_REC(1,4)**2+P_REC(2,4)**2+P_REC(3,4)**2) C C SET NUMBER OF UNMEASURED PARTICLES LOCATED AT THE END OF P_REC ARRAY C NUP=1 C C WHICH CONSTRAINS TO USE?? C C +-- CHOICE OF CONSTRAINTS C V ITF= 1 ! "4"C=1NDF (SOCALLED 1C FIT, BUT IS ACTUALLY A 1 C DEGREE OF FREEDOM FIT ) C C WHICH PARAMETRISATION DATA TO USE? DO WE WANT NON-DIAGONAL C COVARIANCE? TRUE OR RECO BINNING? WHICH *TAG* SHOULD WE USE? C HERE WE DECIDE TO USE A FILE WITH TAG=1, TRUE BINNING AND DIAGONAL C COVARIANCE MATRIX C C +---- RECO=0 C |+--- DIAGONAL=0 C ||+-- TAG=1 C VVV ITEVOL=001 C C WITH THESE VALUES OF ITYPP AND ITEVOL ABCFIT WILL LOOK FOR THE C PARAMETRISATION FILES NAMED: C C AIBI_EVOL_1111_001.DAT (RECO BINNING FILE) C C NOW WE ARE READY TO CALL ABCFIT :-) C CALL ABCFIT(NJET,NUP,P_REC,ITF,CVAL,M0,G0,ITYPP,ITEVOL,P_FIT,CHI2T & ,NDF,IERR) C C SO, WHAT DID WE GET? C PRINT*,' ' PRINT*,'*****************************************************' PRINT*,'** EXAMPLE 6 **' PRINT*,'*****************************************************' PRINT*,' ' CALL PRINTOUT(NJET,MINDEX,IERR,NDF,CHI2T,P_FIT) PRINT*,' ' PRINT*,'=====================================================' PRINT*,'== END OF EXAMPLE ==' PRINT*,'=====================================================' PRINT*,' ' C C========================================================================= C C EXAMPLE 7: QQLV (NJET=4, NUP=1, DELPHI PAR, 2C("EQUAL ENERGY"), TRUE BINNING) C C IN THIS EXAMPLE WE ILLUSTRATE THE USE OF THE EQUAL ENERGY CONSTRAINT C WHICH CAN BE USED TO GIVE EQUAL MASS ON A NUMERICAL BASIS (IS FASTER) C BUT CAN ALSO BE USED MORE SOPHISTICATED OF CAUSE... C C AGAIN: WE ONLY CHANGE PARAMETERS WITH RESPECT TO 6). C C WHICH CONSTRAINS TO USE?? C C +-- CHOICE OF CONSTRAINTS (EQUAL ENERGY) C V ITF= 8 ! "5"C=2NDF (SOCALLED 2C FIT, BUT IS ACTUALLY A 2 C DEGREE OF FREEDOM FIT!) C C WHICH PARAMETRISATION DATA TO USE? DO WE WANT NON-DIAGONAL C COVARIANCE? TRUE OR RECO BINNING? WHICH *TAG* SHOULD WE USE? C HERE WE DECIDE TO USE A FILE WITH TAG=1, TRUE BINNING AND DIAGONAL C COVARIANCE MATRIX C C +---- TRUE=1 C |+--- DIAGONAL=0 C ||+-- TAG=1 C VVV ITEVOL=101 C C WITH THESE VALUES OF ITYPP AND ITEVOL ABCFIT WILL LOOK FOR THE C PARAMETRISATION FILES NAMED: C C AIBI_EVOL_1111_001.DAT (RECO BINNING FILE -- C NEEDED TO START TRUE FIT) C C AIBI_EVOL_1111_101.DAT (TRUE BINNING FILE) C C NOW WE ARE READY TO CALL ABCFIT :-) C CALL ABCFIT(NJET,NUP,P_REC,ITF,CVAL,M0,G0,ITYPP,ITEVOL,P_FIT,CHI2T & ,NDF,IERR) C C SO, WHAT DID WE GET? C PRINT*,' ' PRINT*,'*****************************************************' PRINT*,'** EXAMPLE 7 **' PRINT*,'*****************************************************' PRINT*,' ' CALL PRINTOUT(NJET,MINDEX,IERR,NDF,CHI2T,P_FIT) PRINT*,' ' PRINT*,'=====================================================' PRINT*,'== END OF EXAMPLE ==' PRINT*,'=====================================================' PRINT*,' ' C C========================================================================= C C EXAMPLE 8: QQLV (NJET=4, NUP=1, DELPHI PAR, 2C("EQUAL MASS"), TRUE BINNING) C C IN THIS EXAMPLE WE ILLUSTRATE THE USE OF THE *REAL* EQUAL MASS CONSTRAINT C C AGAIN: WE ONLY CHANGE PARAMETERS WITH RESPECT TO 7). C C WHICH CONSTRAINS TO USE?? C C +-- CHOICE OF CONSTRAINTS (EQUAL MASS) C V ITF= 4 ! "5"C=2NDF (SOCALLED 2C FIT, BUT IS ACTUALLY A 2 C DEGREE OF FREEDOM FIT!) C C NOW WE ARE READY TO CALL ABCFIT :-) C CALL ABCFIT(NJET,NUP,P_REC,ITF,CVAL,M0,G0,ITYPP,ITEVOL,P_FIT,CHI2T & ,NDF,IERR) C C SO, WHAT DID WE GET? C PRINT*,' ' PRINT*,'*****************************************************' PRINT*,'** EXAMPLE 8 **' PRINT*,'*****************************************************' PRINT*,' ' CALL PRINTOUT(NJET,MINDEX,IERR,NDF,CHI2T,P_FIT) PRINT*,' ' PRINT*,'=====================================================' PRINT*,'== END OF EXAMPLE ==' PRINT*,'=====================================================' PRINT*,' ' C C========================================================================= C C EXAMPLE 9: QGQLV (NJET=5, NUP=1, DELPHI PAR, 1C, RECO BINNING) C C IN THIS EXAMPLE WE ILLUSTRATE HOW TO FIT WITH NJET>4. THIS COULD BE A C WW -> QQGLUON LV OR A LL QQGLUON OR ..... C C AGAIN: WE ONLY CHANGE PARAMETERS WITH RESPECT TO 8). C C REMEMBER THAT UNMEASURED PARTICLES MUST BE AT THE END OF P_REC C SO SWAP APPROPRIATELY (1 AND 2 IS OKAY AND 3->4, 4->5 AND 5->3) C CALL PSWAP (4,5,P_REC) CALL PSWAP (3,4,P_REC) C C WE NEED ALSO TO SET LIST TO GIVE THE RIGHT MASS COMBINATIONS (AND c OPTIONAL ALSO MINDEX IF WE WANT TO USE EQUAL MASS CONSTRAINTS) C LIST(3,1)=3 LIST(1,2)=4 LIST(2,2)=5 C C SET TOTAL NUMBER OF PARTICLES C NJET=5 C C WHICH CONSTRAINS TO USE?? C C +-- CHOICE OF CONSTRAINTS C V ITF= 1 ! "4"C=1NDF (SOCALLED 1C FIT, BUT IS ACTUALLY A 1 C DEGREE OF FREEDOM FIT ) C C WHICH PARAMETRISATION DATA TO USE? DO WE WANT NON-DIAGONAL C COVARIANCE? TRUE OR RECO BINNING? WHICH *TAG* SHOULD WE USE? C HERE WE DECIDE TO USE A FILE WITH TAG=1, TRUE BINNING AND DIAGONAL C COVARIANCE MATRIX C C +---- RECO=0 C |+--- DIAGONAL=0 C ||+-- TAG=1 C VVV ITEVOL=001 C C WITH THESE VALUES OF ITYPP AND ITEVOL ABCFIT WILL LOOK FOR THE C PARAMETRISATION FILES NAMED: C C NJET=5 C \ / C AIBI_EVOL_11111_001.DAT (RECO BINNING FILE) C C NOW WE ARE READY TO CALL ABCFIT :-) C CALL ABCFIT(NJET,NUP,P_REC,ITF,CVAL,M0,G0,ITYPP,ITEVOL,P_FIT,CHI2T & ,NDF,IERR) C C SO, WHAT DID WE GET? C PRINT*,' ' PRINT*,'*****************************************************' PRINT*,'** EXAMPLE 9 **' PRINT*,'*****************************************************' PRINT*,' ' CALL PRINTOUT(NJET,LIST,IERR,NDF,CHI2T,P_FIT) PRINT*,' ' PRINT*,'=====================================================' PRINT*,'== END OF EXAMPLE ==' PRINT*,'=====================================================' PRINT*,' ' C C========================================================================= C C EXAMPLE 10: (Q+Q)LV (NJET=3, NUP=1, DELPHI PAR, 1C, RECO BINNING) C C IN THIS EXAMPLE WE ILLUSTRATE HOW TO FIT WITH NJET<4. THIS COULD BE A C WW -> W_HAD LV OR A QQGAMMA OR ..... C C AGAIN: WE ONLY CHANGE PARAMETERS WITH RESPECT TO 9). C C FIRST WE MAKE A SUM PARTICLE FROM 1 AND 2 C DO I=1,4 P_REC(I,1)=P_REC(I,1)+P_REC(I,2) ENDDO C C THEN WE SWAP BACK THE LEPTON AND THE UNMEASURED NEUTRINO, WHICH MUST C BE AT THE END OF P_REC C CALL PSWAP (2,4,P_REC) CALL PSWAP (3,5,P_REC) C C WE NEED ALSO TO SET LIST TO GIVE THE RIGHT MASS COMBINATIONS (AND c OPTIONAL ALSO MINDEX IF WE WANT TO USE EQUAL MASS CONSTRAINTS) C LIST(2,1)=0 ! END LIST FOR MASS1 AFTER THE FIRST PARTICLE LIST(3,1)=0 LIST(1,2)=2 LIST(2,2)=3 C C SET TOTAL NUMBER OF PARTICLES C NJET=3 C C WHICH CONSTRAINS TO USE?? C C +-- CHOICE OF CONSTRAINTS C V ITF= 1 ! "4"C=1NDF (SOCALLED 1C FIT, BUT IS ACTUALLY A 1 C DEGREE OF FREEDOM FIT ) C C WITH THE CURRENT VALUES OF ITYPP AND ITEVOL ABCFIT WILL LOOK FOR THE C PARAMETRISATION FILES NAMED: C C NJET=3 C \ / C AIBI_EVOL_111_001.DAT (RECO BINNING FILE) C C NOW WE ARE READY TO CALL ABCFIT :-) C CALL ABCFIT(NJET,NUP,P_REC,ITF,CVAL,M0,G0,ITYPP,ITEVOL,P_FIT,CHI2T & ,NDF,IERR) C C SO, WHAT DID WE GET? C PRINT*,' ' PRINT*,'*****************************************************' PRINT*,'** EXAMPLE 10 **' PRINT*,'*****************************************************' PRINT*,' ' CALL PRINTOUT(NJET,LIST,IERR,NDF,CHI2T,P_FIT) PRINT*,' ' PRINT*,'=====================================================' PRINT*,'== END OF EXAMPLE ==' PRINT*,'=====================================================' PRINT*,' ' C C========================================================================= C C EXAMPLE 11: (Q+Q)LV (NJET=3, NUP=1, DELPHI PAR, MINDEX, 2C, RECO BINNING) C C NOW WE WILL DO A EQUAL MASS FIT WITH ONLY THREE PARTICLES. THEREFORE C WE NEED TO MODIFY THE MINDEX ARRAY C C AGAIN: WE ONLY CHANGE PARAMETERS WITH RESPECT TO 10). C C WHICH CONSTRAINS TO USE?? C C +-- CHOICE OF CONSTRAINTS C V ITF= 4 ! "5"C=2NDF (SOCALLED 2C FIT, BUT IS ACTUALLY A 2 C DEGREE OF FREEDOM FIT ) C C NOW CHANGE THE MASS CONSTRAIN SETUP: USE MINDEX (LOCATED IN C "abcfit_bmatrix.inc" C MINDEX(1,1)=1 ! MASS1 MINDEX(2,1)=0 ! END OF MASS1 MINDEX(1,2)=2 ! MASS2 MINDEX(2,2)=3 ! MASS2 C C NOW WE ARE READY TO CALL ABCFIT :-) C CALL ABCFIT(NJET,NUP,P_REC,ITF,CVAL,M0,G0,ITYPP,ITEVOL,P_FIT,CHI2T & ,NDF,IERR) C C SO, WHAT DID WE GET? C PRINT*,' ' PRINT*,'*****************************************************' PRINT*,'** EXAMPLE 11 **' PRINT*,'*****************************************************' PRINT*,' ' CALL PRINTOUT(NJET,MINDEX,IERR,NDF,CHI2T,P_FIT) C PRINT*,' ' PRINT*,'=====================================================' PRINT*,'== END OF EXAMPLE ==' PRINT*,'=====================================================' PRINT*,' ' C C========================================================================= C C EXAMPLE 12: QQGAMMA (NJET=2, NUP=0, DELPHI PAR, 2C(NO E OR PZ), RECO BINNING) C C IN THIS EXAMPLE WE FIT A 2 JET EVENT, BUT DON'T USE THE PZ AND E CONSTRAIN. C THIS COULD BE A QQGAMMA EVENT WHERE ONE WANTS THE GAMMA TO GO IN THE C BEAM-PIPE. OF CAUSE ONE COULD ALSO FIT WITH THE GAMMA AS A UNMEASURED C PARTICLE (SEE EXAMPLE 11). C C AGAIN: WE ONLY CHANGE PARAMETERS WITH RESPECT TO 11). C C MAKE A SUM PARTICLE FROM 2 AND 3 (BUT SCREW UP PZ) C DO I=1,4 IF (I.NE.3) P_REC(I,2)=P_REC(I,2)+P_REC(I,3) ENDDO C C WHICH CONSTRAINS TO USE?? C C +-- CHOICE OF CONSTRAINTS C V ITF= 1 ! 4C=4NDF C C SET NUMBER OF UNMEASURED PARTICLES LOCATED AT THE END OF P_REC ARRAY C NUP=0 C C SET TOTAL NUMBER OF PARTICLES C NJET=2 C C NOW SWITCH OF THE E AND PZ CONSTRAINT BY SETTING THE VALUE LARGE NEGATIVE C OF THE ENERGY CONSTRAINT AND EVEN GREATER FOR PZ CONSTRAINT C CVAL(3)=2000.0 CVAL(4)=-1000.0 C C WE NEED ALSO TO SET LIST TO GIVE THE RIGHT MASS COMBINATIONS (AND c OPTIONAL ALSO MINDEX IF WE WANT TO USE EQUAL MASS CONSTRAINTS) C LIST(1,2)=2 LIST(2,2)=0 C C WITH THE CURRENT VALUES OF ITYPP AND ITEVOL ABCFIT WILL LOOK FOR THE C PARAMETRISATION FILES NAMED: C C NJET=2 C \ / C AIBI_EVOL_111_001.DAT (RECO BINNING FILE) C C NOW WE ARE READY TO CALL ABCFIT :-) C CALL ABCFIT(NJET,NUP,P_REC,ITF,CVAL,M0,G0,ITYPP,ITEVOL,P_FIT,CHI2T & ,NDF,IERR) C C SO, WHAT DID WE GET? C PRINT*,' ' PRINT*,'*****************************************************' PRINT*,'** EXAMPLE 12 **' PRINT*,'*****************************************************' PRINT*,' ' CALL PRINTOUT(NJET,LIST,IERR,NDF,CHI2T,P_FIT) PRINT*,' ' PRINT*,'=====================================================' PRINT*,'== END OF EXAMPLE ==' PRINT*,'=====================================================' PRINT*,' ' C C========================================================================= C C DONE C END C SUBROUTINE PRINTOUT(NJET,LIST,IERR,NDF,CHI2T,P_FIT) IMPLICIT NONE #include "abcfit_setup.inc" INTEGER NJET,LIST(NPARTICLES,2),IERR,NDF REAL CHI2T,P_FIT(4,NPARTICLES) INTEGER I,J,K,NDIM REAL SUM(4),COVM(2,2),COVP(4*NPARTICLES,4*NPARTICLES),ERRMTR(PLEN & ,PLEN),PULL(PLEN),CORR PRINT*,'-------------------FIT OUTPUT------------------' PRINT'(1X,A,I4,A,F8.3,A,I2)','STATUS:',IERR,' CHI**2=',CHI2T & ,' /',NDF CALL VZERO(SUM,4) DO I=1,NJET DO J=1,4 SUM(J)=SUM(J)+P_FIT(J,I) ENDDO PRINT'(1X,A8,I2,A,4F12.3)','PARTICLE',I,':',(P_FIT(J,I),J=1,4) ENDDO PRINT'(1X,A11,4F12.3)','SUM: ',(SUM(J),J=1,4) C C C NOW GET THE EVENT-BY-EVENT ERRORS ON MOMENTA AND MASS-COMBINATIONS C GIVEN BY LIST C CALL CY02PM(LIST,NDIM,ERRMTR,PULL,COVP,COVM) C CORR=0.0 IF (COVM(1,1)*COVM(2,2).GT.0.0) CORR=COVM(1,2)/SQRT(COVM(1,1) & *COVM(2,2)) C I=1 DO WHILE(LIST(1,I).GT.0.AND.I.LE.2) J=1 CALL VZERO(SUM,4) DO WHILE(LIST(J,I).GT.0.AND.J.LE.NPARTICLES) DO K=1,4 SUM(K)=SUM(K)+P_FIT(K,LIST(J,I)) ENDDO J=J+1 ENDDO PRINT'(1X,A,7I1,A,F12.3,A,F6.3,A,F6.3)','MASS(',(LIST(J,I),J=1 & ,7),')=',SQRT(MAX(0.0,SUM(4)**2-SUM(1)**2-SUM(2)**2-SUM(3)**2) & ),' +/- ',COVM(I,I),' CORR=',CORR I=I+1 ENDDO RETURN END C SUBROUTINE PSWAP(IP1,IP2,P) IMPLICIT NONE INTEGER IP1,IP2 REAL P(4,7) INTEGER I REAL RTEMP DO I=1,4 RTEMP=P(I,IP1) P(I,IP1)=P(I,IP2) P(I,IP2)=RTEMP ENDDO RETURN END **