]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TEvtGen/Photos/examples/photos_hepevt_example.f
Merge branch 'TPCdev' of https://git.cern.ch/reps/AliRoot into TPCdev
[u/mrichter/AliRoot.git] / TEvtGen / Photos / examples / photos_hepevt_example.f
CommitLineData
f97ec6ec 1C********************************************************
2C Example of use of Photos C++ interface.
3C D+ D- -> tau+ tau- HEPEVT events are constructed.
4C Taus are subsequently decayed via Photos++.
5C
6C @author Tomasz Przedzinski
7C @date 21 August 2013
8C********************************************************
9 PROGRAM PH_HEPVT_TEST
10
11C INITIALIZE PHOTOS++
12 CALL PHOTOS_INIT
13
14C PREPARE SIMPLE EVENT in HEPEVT
15 CALL SIMPLE_EVENT
16 WRITE(*,*) "##############"
17 WRITE(*,*) "PHODMP: BEFORE"
18 WRITE(*,*) "##############"
19 CALL PHODMP
20
21 CALL PHOTOS_PROCESS
22C CALL PHOTOS_PROCESS_PARTICLE(4)
23C CALL PHOTOS_PROCESS_BRANCH(4)
24
25 WRITE(*,*) "##############"
26 WRITE(*,*) "PHODMP: AFTER"
27 WRITE(*,*) "##############"
28 CALL PHODMP
29 END
30
31 SUBROUTINE SIMPLE_EVENT
32C serve as an exaple; to be replaced with event generated by user
33 REAL*8 AMELL
34
35 AMELL = 0.0005111;
36
37C CREATE SIMPLE EVENT: e+ e- -> Z -> tau+ tau- -> pi nu_tau, pi nu_tau
38C ---------------------------------------------------------------------
39 CALL ADD_PARTICLE( 11, 6, 1.7763568394002505D-15, -3.5565894425761324D-15, 4.5521681043409913D+01, 4.5521681043409934D+01,
40 $ AMELL, 0, 0, 3, 3)
41 CALL ADD_PARTICLE( -11, 6, -1.7763568394002505D-15, 3.5488352204797800D-15, -4.5584999071936601D+01, 4.5584999071936622D+01,
42 $ AMELL, 0, 0, 3, 3)
43 CALL ADD_PARTICLE( 23, 5, 0D0, 0D0, -6.3318028526687442D-02, 9.1106680115346506D+01,
44 $ 9.1106658112716090D+01, 1, 2, 4, 5)
45 CALL ADD_PARTICLE( 15, 2, -2.3191595992562256D+01, -2.6310500920665142D+01, -2.9046412466624929D+01, 4.5573504956498098D+01,
46 $ 1.7769900000002097D+00, 3, 0, 6, 7)
47 CALL ADD_PARTICLE( -15, 2, 2.3191595992562256D+01, 2.6310500920665142D+01, 2.8983094438098242D+01, 4.5533175158848429D+01,
48 $ 1.7769900000000818D+00, 3, 0, 8, 9)
49 CALL ADD_PARTICLE( 16, 1, -1.2566536214715378D+00, -1.7970251138317268D+00, -1.3801323581022720D+00, 2.5910119010468553D+00,
50 $ 9.9872238934040070D-03, 4, 0, 0, 0)
51 CALL ADD_PARTICLE(-211, 1, -2.1935073012334062D+01, -2.4513624017269400D+01, -2.7666443730700312D+01, 4.2982749776866747D+01,
52 $ 1.3956783711910248D-01, 4, 0, 0, 0)
53 CALL ADD_PARTICLE( -16, 1, 8.4364531743909055D+00, 8.3202830831667836D+00, 9.6202800273055971D+00, 1.5262723881157640D+01,
54 $ 9.9829332903027534D-03, 5, 0, 0, 0)
55 CALL ADD_PARTICLE( 211, 1, 1.4755273459419701D+01, 1.7990366047940022D+01, 1.9362977676297948D+01, 3.0270707771933196D+01,
56 $ 1.3956753909587860D-01, 5, 0, 0, 0)
57 END
58
59 SUBROUTINE ADD_PARTICLE(ID,STATUS,PX,PY,PZ,E,M,MOTHER1,MOTHER2,DAUGHTER1,DAUGHTER2)
60 INTEGER ID,STATUS,MOTHER1,MOTHER2,DAUGHTER1,DAUGHTER2
61 REAL*8 PX,PY,PZ,E,M
62C-----------------------------------------------------------------------------
63C COMMON HEPEVT
64C
65C IMPORTANT: The definition of HEPEVT is also present in:
66C TAUOLA/src/eventRecords/PhotosHEPEVTEvent.cxx
67C If the definition changes (eg. different value of NMXHEP or REAL
68C instead of REAL*8) it has to be updated in that file as well
69C and Tauola++ has to be recompiled.
70C-----------------------------------------------------------------------------
71 INTEGER NMXHEP
72 PARAMETER (NMXHEP=10000)
73 REAL*8 phep, vhep ! to be real*4/ *8 depending on host
74 INTEGER nevhep,nhep,isthep,idhep,jmohep,
75 $ jdahep
76 COMMON /hepevt/
77 $ nevhep, ! serial number
78 $ nhep, ! number of particles
79 $ isthep(nmxhep), ! status code
80 $ idhep(nmxhep), ! particle ident KF
81 $ jmohep(2,nmxhep), ! parent particles
82 $ jdahep(2,nmxhep), ! childreen particles
83 $ phep(5,nmxhep), ! four-momentum, mass [GeV]
84 $ vhep(4,nmxhep) ! vertex [mm]
85
86C
87C WARNING: note that common PHOQED is missing in this example.
88C it is because its content, so far, is not used in C++
89C implementations.
90C Its function is taken by other methods, which are probably more
91C comfortable and elegant.
92C
93
94 SAVE hepevt
95 NHEP=NHEP+1
96 IDHEP(NHEP) =ID
97 ISTHEP(NHEP)=STATUS
98 PHEP(1,NHEP)=PX
99 PHEP(2,NHEP)=PY
100 PHEP(3,NHEP)=PZ
101 PHEP(4,NHEP)=E
102 PHEP(5,NHEP)=M
103 JMOHEP(1,NHEP)=MOTHER1
104 JMOHEP(2,NHEP)=MOTHER2
105 JDAHEP(1,NHEP)=DAUGHTER1
106 JDAHEP(2,NHEP)=DAUGHTER2
107 END
108
109 SUBROUTINE PHODMP
110C.----------------------------------------------------------------------
111C.
112C. PHOTOS: PHOton radiation in decays event DuMP routine
113C.
114C. Purpose: Print event record.
115C.
116C. Input Parameters: Common /HEPEVT/
117C.
118C. Output Parameters: None
119C.
120C. Author(s): B. van Eijk Created at: 05/06/90
121C. Last Update: 05/06/90
122C.
123C.----------------------------------------------------------------------
124C IMPLICIT NONE
125 DOUBLE PRECISION SUMVEC(5)
126 INTEGER I,J
127C this is the hepevt class in old style. No d_h_ class prD-name
128 INTEGER NMXHEP
129 PARAMETER (NMXHEP=10000)
130 REAL*8 phep, vhep ! to be real*4/ *8 depending on host
131 INTEGER nevhep,nhep,isthep,idhep,jmohep,
132 $ jdahep
133 COMMON /hepevt/
134 $ nevhep, ! serial number
135 $ nhep, ! number of particles
136 $ isthep(nmxhep), ! status code
137 $ idhep(nmxhep), ! particle ident KF
138 $ jmohep(2,nmxhep), ! parent particles
139 $ jdahep(2,nmxhep), ! childreen particles
140 $ phep(5,nmxhep), ! four-momentum, mass [GeV]
141 $ vhep(4,nmxhep) ! vertex [mm]
142
143 INTEGER PHLUN
144 COMMON/PHOLUN/PHLUN
145 DO 10 I=1,5
146 10 SUMVEC(I)=0.
147C--
148C-- Print event number...
149 WRITE(PHLUN,9000)
150 WRITE(PHLUN,9010) NEVHEP
151 WRITE(PHLUN,9080)
152 WRITE(PHLUN,9020)
153 DO 30 I=1,NHEP
154C--
155C-- For 'stable particle' calculate vector momentum sum
156 IF (JDAHEP(1,I).EQ.0) THEN
157 DO 20 J=1,4
158 20 SUMVEC(J)=SUMVEC(J)+PHEP(J,I)
159 IF (JMOHEP(2,I).EQ.0) THEN
160 WRITE(PHLUN,9030) I,IDHEP(I),JMOHEP(1,I),(PHEP(J,I),J=1,5)
161 ELSE
162 WRITE(PHLUN,9040) I,IDHEP(I),JMOHEP(1,I),JMOHEP(2,I),(PHEP
163 & (J,I),J=1,5)
164 ENDIF
165 ELSE
166 IF (JMOHEP(2,I).EQ.0) THEN
167 WRITE(PHLUN,9050) I,IDHEP(I),JMOHEP(1,I),JDAHEP(1,I),
168 & JDAHEP(2,I),(PHEP(J,I),J=1,5)
169 ELSE
170 WRITE(PHLUN,9060) I,IDHEP(I),JMOHEP(1,I),JMOHEP(2,I),
171 & JDAHEP(1,I),JDAHEP(2,I),(PHEP(J,I),J=1,5)
172 ENDIF
173 ENDIF
174 30 CONTINUE
175 SUMVEC(5)=SQRT(SUMVEC(4)**2-SUMVEC(1)**2-SUMVEC(2)**2-
176 &SUMVEC(3)**2)
177 WRITE(PHLUN,9070) (SUMVEC(J),J=1,5)
178 RETURN
179 9000 FORMAT(1H0,80('='))
180 9010 FORMAT(1H ,29X,'Event No.:',I10)
181 9020 FORMAT(1H0,1X,'Nr',3X,'Type',3X,'Parent(s)',2X,'Daughter(s)',6X,
182 &'Px',7X,'Py',7X,'Pz',7X,'E',4X,'Inv. M.')
183 9030 FORMAT(1H ,I4,I7,3X,I4,9X,'Stable',2X,5F9.2)
184 9040 FORMAT(1H ,I4,I7,I4,' - ',I4,5X,'Stable',2X,5F9.2)
185 9050 FORMAT(1H ,I4,I7,3X,I4,6X,I4,' - ',I4,5F9.2)
186 9060 FORMAT(1H ,I4,I7,I4,' - ',I4,2X,I4,' - ',I4,5F9.2)
187 9070 FORMAT(1H0,23X,'Vector Sum: ', 5F9.2)
188 9080 FORMAT(1H0,6X,'Particle Parameters')
189 END