COSMOS v7.655  COSMOSv7655
(AirShowerMC)
cxsSpecial.f
Go to the documentation of this file.
1 ! next is for Cosmos bofore version 9
2 ! This is a dummy routine to avoid "unresolved external name"
3 ! at link time when the user does not supply own cxsSpecial.f
4 !
5 #define BEFCosV9
6  subroutine cxsspecial(pj, media, model)
7 ! Normally, in default, the hadronic intraction x-section is provided by the
8 ! currently active model of hadronic interaction (event generator).
9 ! In some case, e.g, if the user wants to use model "A" above 80 GeV/n
10 ! and "dpmjet3" below 80GeV/n, for the event generation, while for hadronic
11 ! interaction x-section, the user want to use model "B" above 80 GeV/n,
12 ! Then, the user may give
13 ! IntModel='"dpmjet3", 80, "A"',
14 ! XsecModel='dpmjet3", 80, "B"'
15 ! In this case, model "A" and "B" must be pre-registered interaction models
16 ! (If XsecModel is not given, XsecModel=IntModel is assumed.)
17 ! These functionality has been available in recent versions.
18 ! However, in some case, instead of model "B", the user may want to use peculiar
19 ! x-section values not providable by existing models (for some test etc).
20 ! In this case, the user must give
21 ! XsecModel='dpmjet3", 80, "special"'
22 ! and must give the x-sction values through the cxsSpecial subroutine.
23 !
24 ! This file contains a kind of dummy prototype of such a subroutine;
25 ! although it is dummy,
26 ! it must exist and included in the library, even if the user
27 ! does not give "special" to "B". This is because there is a calling
28 ! sequence to cxsSpecial in cGetXsec.f; without this, error will happen
29 ! when the user mekes an application.
30 !
31 ! Meanwhile if the user gives "special", then the user must provide
32 ! cxsSpecial.f to replace this dummy, otherwise, program
33 ! exectution will stop.
34 ! In summary,
35 ! A) If the user does not use "special" in XsecModel, the user need not
36 ! prepaare own cxsSpecial.f. Even if the user prepares own routine,
37 ! it is neglected.
38 ! B) If the user specifies "special" in XsecModel, the user must prepare
39 ! own cxsSpecial.f and must give x-section values in that subroutine
40 ! Otherwise, rogram execution will stop.
41 !
42 ! Inside the user's own cxsSpecial, the user may skip calculatiion of
43 ! x-section depending on projectile, target and projectile energy.
44 ! In such a case, the user may employ values by some registered model.
45 !
46 #if defined (BEFCosV9)
47  use modxsecmedia, xmedia=>media
48 #endif
49  implicit none
50 
51 #ifndef BEFCosV9
52 #include "Zmedia.h"
53 #endif
54 
55 #include "Zcode.h"
56 #include "Zptcl.h"
57 #include "Zevhnp.h"
58 
59  character(*),intent(out):: model
60  type(ptcl)::pj ! input. projectile
61 #if defined (BEFCosV9)
62  type(xsmedia),intent(inout):: media ! media
63 #else
64  type(epmedia),intent(inout):: media
65 #endif
66 ! next check is only for prototype. don't use in your own cxsSpecial
67  if( model == "special" ) then
68 ! "special" case should not be called for this program;
69 ! the user must prepare own cxsSpecial
70  write(0,*)
71  * ' The dummy cxsSpecial is called for XsecModel="special"'
72  write(0,*)
73  * ' must prepare own cxsSpecial and compile with your apps.'
74  write(9,*) ' see Cosmos/UserHook/cxsSpecial.f'
75  stop
76  endif
77 
78 ! In your own cxsSpecial, you must give media%xs, media%elem(:)%nsigmas.
79 ! Let xs for pj and the i-th target element (with mass number
80 ! media%elem(i)%A) be XSi, then
81 ! media%elem(i)%nsigma= XSi*media%elem(i)%No
82 ! and
83 ! media%xs = sum( media%elem(1:n)%nsigma )
84 ! where n = media%noOfElem
85 
86 ! *************************
87 ! If pj, media, pj%fm%p(4)/n are not suited for "special", next may be
88 ! activated,
89 !!!! call cqActiveMdl(model)
90 ! to use ActiveMdl.
91 ! (You may also set "model" with another known model without calling cqA...
92 
93 ! Then you may simply exit the subrouine.
94 ! ******************a
95  end
Definition: Zptcl.h:75
subroutine cxsspecial(pj, media, model)
Definition: cxsSpecial.f:7