~maddevelopers/mg5amcnlo/WWW5_caching

« back to all changes in this revision

Viewing changes to users/mardelcourt/PROC_242195/PROC_242195/SubProcesses/idenparts.f

  • Committer: John Doe
  • Date: 2013-03-25 20:27:02 UTC
  • Revision ID: john.doe@gmail.com-20130325202702-5sk3t1r8h33ca4p4
first clean version

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
      subroutine idenparts(iden_part,itree,sprop,forcebw,prwidth)
 
2
c
 
3
c     Keep track of identical particles to map radiation processes
 
4
c     (i.e., not use BW for such processes).
 
5
c     Only consider particles that are present in final state as
 
6
c     radiating, since need to correctly map conflicting BWs for decays.
 
7
c
 
8
c     Constants
 
9
c
 
10
      include 'genps.inc'
 
11
      include 'maxconfigs.inc'
 
12
      include 'maxamps.inc'
 
13
      include 'nexternal.inc'
 
14
c
 
15
c     Arguments
 
16
c
 
17
      integer iden_part(-nexternal+1:nexternal)
 
18
      integer itree(2,-max_branch:-1),iconfig
 
19
      integer sprop(maxsproc,-max_branch:-1)  ! Propagator id
 
20
      integer forcebw(-max_branch:-1) ! Forced BW, for identical particle conflicts
 
21
      double precision prwidth(-nexternal:0)  !Propagator width
 
22
c
 
23
c     local
 
24
c
 
25
      integer i,j,it
 
26
      integer idup(nexternal,maxproc,maxsproc)
 
27
      integer mothup(2,nexternal)
 
28
      integer icolup(2,nexternal,maxflow,maxsproc)
 
29
      include 'leshouche.inc'
 
30
      integer ipdg(-nexternal+1:nexternal)
 
31
c
 
32
c     Global
 
33
c
 
34
      include 'coupl.inc'                     !Mass and width info
 
35
      double precision stot
 
36
      common/to_stot/stot
 
37
 
 
38
      do i=1,nexternal
 
39
         ipdg(i) = idup(i,1,1)
 
40
      enddo
 
41
      do i=-(nexternal-1),nexternal
 
42
         iden_part(i)=0
 
43
      enddo
 
44
 
 
45
      i=1
 
46
      do while (i .lt. nexternal-2 .and. itree(1,-i) .ne. 1)
 
47
         ipdg(-i)=sprop(1,-i)
 
48
         if (prwidth(-i) .gt. 0d0) then
 
49
            if(ipdg(-i).eq.ipdg(itree(1,-i)).and.itree(1,-i).gt.0.or.
 
50
     $         ipdg(-i).eq.ipdg(itree(2,-i)).and.itree(2,-i).gt.0) then
 
51
               iden_part(-i) = ipdg(-i)
 
52
            else if(ipdg(-i).eq.ipdg(itree(1,-i)).and.
 
53
     $              iden_part(itree(1,-i)).ne.0.or.
 
54
     $         ipdg(-i).eq.ipdg(itree(2,-i)).and.
 
55
     $              iden_part(itree(2,-i)).ne.0) then
 
56
               iden_part(-i) = ipdg(-i)
 
57
            endif
 
58
         endif
 
59
         i=i+1
 
60
      enddo
 
61
      end