c===============================================================================
c			        COM_MUTRACK.INC   
c===============================================================================
c
c  Dieses Includefile enthaelt die Deklarationen der meisten Variablen, die
c  innerhalb des Programms Mutrack von mehr als einer Routine benoetigt werden
c  und daher einem Commonblock zugeordnet sein muessen. Fuer diese Variablen 
c  wird der unbenannte ('blank') Commonblock verwendet. Dieses file wird in
c  fast alle Subroutinen eingebunden (abgesehen von denen, die in der Datei 
c  SUB_TD.FOR zusammengefasst sind und sich auf die Trajektorienberechnung im
c  Bereich des TriggerDetektors beschraenken).
c
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc


c===============================================================================
c			I. Konstanten
c===============================================================================

c-------------------------------------------------------------------------------
c		Die Versionsnummern
c-------------------------------------------------------------------------------

	character*8   version		      ! Versionsnummer von MUTRACK
	parameter   ( version = '2.0.1' )

c===============================================================================

	character*8   accelVersion /' '/      ! Versionsnummer von ACCEL
	integer	      accelVersionIndx
	character*25  mappenNameACCEL

	character*8   mutrackVersion /' '/    ! Versionsnummer von 'FoilFile'
	integer	      mutrackVersionIndx

	COMMON accelVersion,accelVersionIndx,mutrackVersion,mutrackVersionIndx
	COMMON mappenNameACCEL

c===============================================================================
c Ver. 1.4.1:  mit richtiger Formel fuer SigmaAufstreu:
c	(ausgehend von 'theta1/2 = HWHM' anstatt wie zuvor '.. = FWHM')
c
c Ver. 1.5.1: - Implementierung der neuen Linse 'L2' zwischen Spiegel und TD.
c             - Alle Programmstellen in Zusammenhang mit Simulationsfiles
c		von TP wurden entfernt. In der Praxis wurde die Moeglichkeit
c		nie genutzt und erschwerte bei der Programmpflege die Programmier-
c		arbeit. In der Folge wurde auch das logical 'USE_AH' ueber-
c		fluessig. Die diesbezgl. Steuerung erfolgt jetzt nur noch
c		ueber 'fromScratch', 'use_ACCEL' und 'use_MUTRACK'.
c             - Umbenennung einiger Variabler. Speziell wurde die Extension
c		'_AH' von Variablen in Zusammenhang mit ACCEL und 'foilfile'
c		durch '_prevSim' (fuer PREVious SIMulation) ersetzt.
c	      - Vorbereitung der Implementierung der Magnetfelder durch Ein-
c		fuehren der entsprechenden Schleifenparameter etc. Bis jetzt aber
c		ohne jegliche Magnetfeldspezifische Kalkulationen.
c Ver. 1.5.2: - neues Logical 'alfaTgtVertically'
c Ver. 1.5.3: - Fehlerbereinigung: Ab Version 1.5.1 wurden bei Fortfuehrung von
c		Foilfiles, welche selbst aus ACCEL-files erzeugt worden sind
c		die Trajektoriendaten statt aus dem Foilfile aus dem ACCEL-file
c		eingelesen. Auch wurde die Gebietskodierung nicht aktualiesiert
c Ver. 1.5.4: - 27-jan-1997 (AH): 'sigmaS1Fo' und 'smearS1Fo' implementiert
c Ver. 1.5.5: - 02-feb-1997 (AH): implementation of 'E0InterFromFile'
c Ver. 1.5.6: - praktisch gleich Ver. 1.5.5
c Ver. 2.0.0: - mit f-Funktion von Meyer als bessere Winkelaufstreuungs-
c	        verteilungsfunktion gegenueber bisher verwendeter Gauss-
c	        foermiger Winkelaufstreuung.
c	      - Wahlmoeglichkeit zwischen ICRU-Energieverlustdaten fuer
c	        Graphit (bisher ausschliesslich verwendet) und amorphen
c		Kohlenstoff (mit etwas kleinerem mittleren Energieverlust)
c		implementiert. (-> logical 'graphitData'). (Es werden wie
c		zuvor stets die totalen Stoppingpowerdaten, also elektronisch
c		+ nuklear, verwendet).
c	      - Routinen fuer Berechnung der Breite der Energieaufstreuung in
c		der Triggerfolie nach Lindhard/Scharff (theoret.) sowie nach
c		Yang (semiempirisch) implementiert. Die Routinen beruhen auf
c		den (sehr kurzen) Programmen, mit welchen ich die Kurven
c		fuer die Diss erstellt habe. Jedoch habe ich nicht mehr aus-
c		getestet, ob ich bei der Abaenderung fuer Mutrack alles richtig
c		gemacht habe ...
c             - Version 2.0.0 ist die letzte von mir erstellte Version.
c		Ich hoffe, alles ist mittlerweile einigermassen fehlerfrei und
c		ausreichend verstaendlich, so dass die Nachwelt sich bei
c		anfaelligen Aenderungen nicht ueber Gebuehr echauffieren muss...
c		Gruss, Anselm Hofer ...
c
c	      - Version 2.0.1:  nTuple output contains now position 
c                               information of muons at TD foil as well as
c                               the position of FE when hitting MCP3
c			        TP, 18-Oct-2000
c
c===============================================================================

c-------------------------------------------------------------------------------
c		Zuteilung der GebietsNummern k (0 <= k <= Gebiete_Anzahl)
c		zu den Gebieten
c-------------------------------------------------------------------------------

	integer	target,upToGrid1,upToGrid2,upToHeShield,
     +		upToLNShield,upToL1Map,upToExL1,upToEnSp,upToExSp,
     +		upToChKoord,upToL2andFoMap,upToExL2,upToEnTD,upToExTD,
     +		upToL3Map,upToExL3,upToM2Map,upToMCP2

c		    GEBIET	  'k'
	parameter ( target	   =  0 ) ! <- zaehlt nicht fuer 'Gebiete_Anzahl'!
	parameter ( upToGrid1	   =  1 )
	parameter ( upToGrid2	   =  2 )
	parameter ( upToHeShield   =  3 )
	parameter ( upToLNShield   =  4 )
	parameter ( upToL1Map	   =  5 )
	parameter ( upToExL1	   =  6 )
	parameter ( upToEnSp	   =  7 )
	parameter ( upToExSp	   =  8 )
	parameter ( upToChKoord	   =  9 )
	parameter ( upToL2andFoMap = 10 )
	parameter ( upToExL2       = 11 )
	parameter ( upToEnTD   	   = 12 )
	parameter ( upToExTD   	   = 13 )
	parameter ( upToL3Map	   = 14 )
	parameter ( upToExL3	   = 15 )
	parameter ( upToM2Map	   = 16 )
	parameter ( upToMCP2	   = 17 )

	integer     Gebiete_Anzahl
	parameter ( Gebiete_Anzahl=17)	! <- Startpkt 'Target' zaehlt nicht !! 

	character Gebiet_Text(Gebiete_Anzahl)*40
	COMMON	  Gebiet_Text


c-------------------------------------------------------------------------------
c	Zuteilungen der Schleifenparameter zu den Feldelemenkten k
c       (1 <= k <= par_Anzahl) von par(i,k), n_par(k), parWert(k), par_text(k)
c-------------------------------------------------------------------------------

	integer UTgt,UGua,UG1,UL1,USp,UL2,UL3, UFolie,UVorne,UHinten,UMCP3,
     +		UMCP2, BTD,BHelm, alfTgt,alfSp,alfTD, mass,charge,
     +		ener,yPos,zPos,thetAng,phiAng,Thickn,Eloss,DeltaL1,DeltaL2

	parameter ( UTgt    =  1 )
	parameter ( UGua    =  2 )
	parameter ( UG1     =  3 )
	parameter ( UL1     =  4 )
	parameter ( USp     =  5 )
	parameter ( UL2     =  6 )
	parameter ( UL3     =  7 )

	parameter ( UFolie  =  8 )
	parameter ( UVorne  =  9 )
	parameter ( UHinten = 10 )
	parameter ( UMCP3   = 11 )

	parameter ( UMCP2   = 12 )

	parameter ( BTD     = 13 )
	parameter ( BHelm   = 14 )

	parameter ( alfTgt  = 15 )
	parameter ( alfSp   = 16 )
	parameter ( alfTD   = 17 )

	parameter ( mass    = 18 )
	parameter ( charge  = 19 )

	parameter ( ener    = 20 )
	parameter ( yPos    = 21 )
	parameter ( zPos    = 22 )
	parameter ( thetAng = 23 )
	parameter ( phiAng  = 24 )

	parameter ( Thickn  = 25 )
	parameter ( Eloss   = 26 )

	parameter ( DeltaL1 = 27 )
	parameter ( DeltaL2 = 28 )

	integer     par_Anzahl
	parameter ( par_Anzahl=28)  ! <- 'Zufalls-Schleife' zu k=0 zaehlt nicht!


c-------------------------------------------------------------------------------
c		Code-Nummern fuer das Schicksal des Teilchens
c-------------------------------------------------------------------------------

	integer     smallest_code_Nr
	integer     highest_code_Nr

	integer code_stopped_in_foil
 	integer code_durchSpiegel,code_Stuetzgitter,code_lostInTD,code_NotRegInM3
	integer code_hitBlende,code_hitMCP2inactive 
	integer code_frontOfMapAc,code_leftMapAc,code_hit_TgtHolder
 	integer code_ok
	integer code_decay,code_vorbei,code_reflektiert,
     +		code_wand,code_grid,code_lost,code_dtsmall

c		    SCHICKSAL		'code'

	parameter ( smallest_code_Nr    =-10 )

	parameter ( code_ok 	        =  0 )
	parameter ( code_durchSpiegel   = -1 )
	parameter ( code_Stuetzgitter   = -2 )
	parameter ( code_lostInTD       = -3 )
	parameter ( code_NotRegInM3     = -4 )
	parameter ( code_hitBlende	= -5 )
	parameter ( code_hitMCP2inactive= -6 )

	parameter ( code_frontOfMapAc   = -7 )
	parameter ( code_leftMapAc      = -8 )
	parameter ( code_hit_TgtHolder  = -9 )

	parameter ( code_stopped_in_foil=-10 )

	parameter ( code_decay		=  1 )
	parameter ( code_vorbei		=  2 )
	parameter ( code_reflektiert    =  3 )
	parameter ( code_grid           =  4 )
	parameter ( code_wand		=  5 )
	parameter ( code_lost		=  6 )
	parameter ( code_dtsmall	=  7 )

	parameter ( highest_code_Nr	=  7 )

	character code_Text(smallest_code_Nr:highest_code_Nr)*27
	COMMON	  code_text


c-------------------------------------------------------------------------------
c	Zuteilung der Statistiken zu den Feldelementen k ( 1<= k <= stat_Anzahl)
c	von statInMemory(k),createTabelle(k),statNeeded(k),statMem(i,k)
c-------------------------------------------------------------------------------

	integer Nr_S1xM2,Nr_S1M2,Nr_S1Fo,Nr_FoM2,Nr_S1M3,Nr_M3M2,Nr_t_FE,
     +		Nr_y_Fo,Nr_z_Fo,Nr_r_Fo,Nr_y_M2,Nr_z_M2,Nr_r_M2,Nr_y_xM2,
     +		Nr_z_xM2,Nr_r_xM2


c		    STATISTIK     'k'	
	parameter ( Nr_S1xM2	=  1 )
	parameter ( Nr_S1M2	=  2 )
	parameter ( Nr_S1Fo	=  3 )
	parameter ( Nr_FoM2	=  4 )
	parameter ( Nr_S1M3	=  5 )
	parameter ( Nr_M3M2	=  6 )
	parameter ( Nr_t_FE	=  7 )
	parameter ( Nr_y_Fo	=  8 )
	parameter ( Nr_z_Fo	=  9 )
	parameter ( Nr_r_Fo	= 10 )
	parameter ( Nr_y_M2	= 11 )
	parameter ( Nr_z_M2	= 12 )
	parameter ( Nr_r_M2	= 13 )
	parameter ( Nr_y_xM2	= 14 )
	parameter ( Nr_z_xM2	= 15 )
	parameter ( Nr_r_xM2	= 16 )

	integer Stat_Anzahl
	parameter (Stat_Anzahl = 16)

	! Kurznamen der Statistiken
	integer LengthStatName
	parameter (LengthStatName = 8)		! hier muss zwei mal die gleich
	character statName(stat_Anzahl)*8	! Zahl stehen

	integer What_Anzahl
	parameter (What_Anzahl =  5)

	! Kurznamen der statistischen Groessen:
	integer LengthWhatName
	parameter (LengthWhatName = 8)		! hier muss zwei mal die gleiche
	character whatName(what_Anzahl)*8	! Zahl stehen!


c===============================================================================
c			II. Variablen in Commonbloecken
c===============================================================================

c-------------------------------------------------------------------------------
c		die Gebietsnummer
c-------------------------------------------------------------------------------

        integer	Gebiet0	     ! GebietsNummer beim Start
        integer	Gebiet	     ! aktuelle GebietsNummer

	integer StartFlaeche

	COMMON Gebiet0, StartFlaeche


c-------------------------------------------------------------------------------
c		zufallsverteilte Startparameter
c-------------------------------------------------------------------------------

c Energie:

	logical random_E0	  ! Zufallsverteilung fuer Startenergie?
	logical random_E0_equal   ! gleichverteilte Startenergie
	real	lowerE0,upperE0	  ! Grenzen fuer Zufallsverteilung
	logical random_E0_gauss   ! gaussverteilte Startenergie
	real	sigmaE0		  ! Breite der Gaussverteilung
	logical e0InterFromFile /.FALSE./
	real    E0Low(101)

c Position:

	logical random_pos	  ! Zufallsverteilung fuer Startposition?
	logical random_y0z0_equal ! gleichverteilt auf Viereckflaeche
	logical random_r0_equal	  ! gleichverteilt auf Kreisflaeche
	logical random_y0z0_Gauss ! Gauss-verteilt auf Viereckflaeche
	logical random_r0_Gauss   ! Gauss-verteilt auf Kreisflaeche
	real	StartBreite,StartHoehe,StartRadius, sigmaPosition

c Winkel:

	logical random_angle	  ! Zufallsverteilung fuer Startwinkel?
	logical random_lambert    ! Lambert-Verteilung
        logical random_gauss      ! Gauss-Verteilung
 	real	StartLambertOrd
        real    SigmaWinkel       ! Breite der Gaussverteilung

	logical	ener_offset,pos_offset,angle_offset

c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

	COMMON random_E0,random_E0_equal,lowerE0,upperE0
	COMMON random_E0_gauss,sigmaE0
	COMMON e0InterFromFile,E0Low
	COMMON random_pos,random_y0z0_equal,
     +		random_r0_equal,random_y0z0_Gauss,random_r0_Gauss,
     +		StartBreite,StartHoehe,StartRadius,sigmaPosition
	COMMON random_angle,random_lambert,random_gauss
	COMMON StartLambertOrd,sigmaWinkel

	COMMON ener_offset,pos_offset,angle_offset


c-------------------------------------------------------------------------------
c		Schleifen-Parameter
c-------------------------------------------------------------------------------
c (par(n,0) wird fuer die 'Zufallsschleife' verwendet)

        real       par(3,0:par_Anzahl)  ! min, max und step der ParameterSchleifen
        integer    n_par(0:par_Anzahl)  ! die Anzahl unterschiedl. Werte je Schleife
	real	   parWert(par_Anzahl)  ! der aktuelle Wert der Schleifenvariablen
        character  par_text(par_Anzahl)*22 ! Beschreibung jeder Variablen fuer Ausgabezwecke

	integer	   reihenFolge(par_Anzahl)	! Enthaelt die Reihenfolge der
						! Abarbeitung der Schleifenparameter

c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

        COMMON	  par, parWert, n_par, par_text, reihenfolge


c-------------------------------------------------------------------------------
c		die Teilchenarten (artList)
c-------------------------------------------------------------------------------
 
	integer	    Arten_Zahl		    ! Anzahl der bekannten Arten
	parameter  (Arten_Zahl = 36)

	character*4 art_Name(Arten_Zahl)    ! Bezeichnungen der bekannten Arten
	real	    art_Masse(Arten_Zahl)   ! Massen der bekannten Arten
	real	    art_Ladung(Arten_Zahl)  ! Ladungen der bekannten Arten

	character   artList*50		    ! TeilchenArten-Liste
	character   artList_prevSim*50	    ! TeilchenArten-Liste bei ACCEL
					    ! und 'useFoilFile'
	logical	    artList_defined	    ! wurde Teilchenart spezifiziert?
	logical	    mu_flag		    ! signalisiert, ob Myon-Teilchen erkannt wurde

	integer	    artenMax		    ! Maximalzahl in artList
	parameter  (artenMax = 9)	    !     akzeptierter Arten
	integer	    art_Nr(artenMax)	    ! die in artList enthaltenen Arten
	integer	    artNr		    ! die Nummer der aktuellen Art

c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

	COMMON art_Name,art_Masse,art_Ladung
	COMMON artList,artList_prevSim,artList_defined,mu_flag
	COMMON art_Nr,artNr


c-------------------------------------------------------------------------------
c		Trigger-Detektor
c-------------------------------------------------------------------------------

	logical	TriggerInBeam	! TriggerDetektor im Strahlweg?
	real	Thickness	! Foliendicke

	logical	log_aufstreu	! WinkelAufstreuung in Folie beruecksichtigen?
	logical log_aufstreu_fixed ! Breite der Winkelverteilung fest vorgegeben
	real	sigmaAufstreu   ! Sigma des Gaussverteilten Aufstreuwinkels
	logical log_Meyer_Gauss		! Meyer-Formel mit Gaussfkt
	logical log_Meyer_F_Function	! Meyer mit F-Funktion (genauer!)

	logical log_E_Verlust	! Energieverlust in TD-Folie beruecksichtigen?
	logical log_E_Verlust_defined   ! mittlerer Energieverlust vorgegeben?
	logical log_E_Verlust_ICRU	! mittlerer E-Verlust gemaess ICRU?
	logical log_E_Straggling_sigma	! Gausfoermige Energieverschmierung?
	logical log_E_Straggling_equal	! Gleichmaessige Energieverschmierung?
	logical log_E_Straggling_Lindhard ! Gaussfoermig nach Lindhard/Scharff
	logical log_E_Straggling_Yang     ! Gaussfoermig nach Yang

	logical	calculate_each		! bei ICRU: fuer jedes Teilchen neu?
	real	mean_E_Verlust		! bei '_defined': mittlerer E-Verlust

	real	sigmaE		! Breite der Verteilung der Verlustfunktion
	real	lowerE		! untere Grenze bei '_equal'
	real	upperE		! obere Grenze bei '_equal'
 
	logical graphitData

	logical log_neutralize
	real    neutral_fract(artenMax) ! Prozentzahl der zu neutralisiserenden Teilchen

	logical generate_FE	! FolienElektronen generieren?

c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

	COMMON /TRIGGERINBEAM/ TriggerInBeam
	COMMON Thickness
	COMMON log_aufstreu,log_aufstreu_fixed,sigmaAufstreu
	COMMON log_Meyer_Gauss, log_Meyer_F_Function
	COMMON log_E_Verlust,log_E_Verlust_defined,log_E_Verlust_ICRU,
     +		log_E_Straggling_sigma,log_E_Straggling_equal,log_E_Straggling_Lindhard,
     +		log_E_Straggling_Yang,mean_E_Verlust,calculate_each,
     +		sigmaE,lowerE,upperE
        common /elossDataType/ graphitData
	COMMON log_neutralize,neutral_fract
	COMMON generate_FE


c-------------------------------------------------------------------------------
c		Programmsteuerung
c-------------------------------------------------------------------------------

	logical alfaTgtVertically ! vertikale Variation des Targetwinkels

	real	scaleFactor	! Skalierungsfaktor fuer die Kammergeometrie

	logical UseDecay	! MYONEN-Zerfall beruecksichtigen?
	logical UseDecay_	! MYONEN-Zerfall beruecksichtigen und Art ist myon?
	logical UseDecay_prevSim! MYONEN-Zerfall bei ACCEL-Rechnung beruecksichtigt?

	logical DEBUG		! DEBUG-Version?
	logical DEBUG_		! DEBUG .AND. startNr.LE.DEBUG_Anzahl
	logical DEBUG_FE	! FE in DEBUG-Info?

	logical log_alpha0_KS	! Startwinkel im Kammer-System gegeben?
	logical notLastLoop 

	logical BATCH_MODE	! -> keine Graphikausgabe; keine Ausgabe der
				! Prozentzahl schon gerechneter Trajektorien
	logical INPUT_LIST	! spezielle Version eines Batch-Runs
	integer ListLength	!
	logical gotFileNr	!
	character inputListName*20
	logical TestRun		! falls true, RunNummern zwischen 9900 und 9999
	logical log_confine	! Begrenze Schrittweite in Integrationsgebieten
				!    -> 'dl_max_...'
	logical TestOnWireHit   ! Pruefen, ob Gitterstaebe getroffen werden
	logical idealMirror	! Spiegel als ideal rechnen?

	logical upToTDFoilOnly  ! Integration nur bis zum Erreichen der TD-Folie
	logical createFoilFile  ! File mit Trajektoriendaten bei Erreichen der
				!   TD-Folie erstellen, das dann analog zu
				!   den ACCEL-files eingelesen werden kann.

	logical	lense2		! Linse 2 zw. Spiegel und TD vorhanden ?

c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

	COMMON alfaTgtVertically
	COMMON scaleFactor
	COMMON UseDecay,UseDecay_,UseDecay_prevSim
	COMMON DEBUG,DEBUG_,DEBUG_FE
	COMMON log_alpha0_KS,notLastLoop
	COMMON /BATCH_MODE/ BATCH_MODE
	COMMON INPUT_LIST,ListLength,gotFileNr,inputListName
	COMMON TestRun,log_confine,idealMirror
	COMMON /TestOnWireHit/ TestOnWireHit
	COMMON upToTDFoilOnly, createFoilFile
	COMMON /lense2/ lense2


c-------------------------------------------------------------------------------
c		Graphikausgabe
c-------------------------------------------------------------------------------

	logical graphics	! graphisch Ausgabe?
	integer	graphics_Anzahl ! fuer wieviele Starts je Schleife?
	logical graphics_	! GRAPHICS .AND. startNr.LE.GRAPHICS_Anzahl
	logical plot_FE		! Trajektorien der Folienelektronen plotten?

	integer n_postSkript    ! PostSkript-files erstellen?

	integer iMonitor	! Abtastfrequenz fuer Graphik
	integer color		! 0=schwarzweiss, 1=farbig

	integer	schnitt_p	! Kammerteil fuer die Schnittebene der Graphik
	real    schnitt_x	! x-Koordinate der Schnittebenen
	logical vertical	! Blick auf die Kammer von oben?

c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

	COMMON  graphics,graphics_Anzahl,graphics_
	COMMON  plot_FE, n_postSkript, iMonitor,schnitt_p
	COMMON /PICT/ color, schnitt_x, vertical


c-------------------------------------------------------------------------------
c		FileNamen
c-------------------------------------------------------------------------------

	character geo_fileName*60	! Name des Files mit der Kammergeometrie
	character filename*20		! Name der Ausgabe-Dateien
	character filename_ACCEL*40	! gegebenenfalls Name des ACCEL-files
	character filename_MUTRACK*40	! gegebenenfalls Name des 'foilfiles'

c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

	COMMON geo_fileName
	COMMON /filename/ filename
	COMMON filename_ACCEL,filename_MUTRACK


c-------------------------------------------------------------------------------
c		Vorgaben fuer das Summary (.LOG-file)
c-------------------------------------------------------------------------------

	integer n_outWhere	  ! LogFile auf welche Ausgabekanaele geben?

	logical LogFile     	  ! Logfile erstellen?
	logical smallLogFile	  ! minimalversion des Logfiles erstellen?

	logical statsInSummary	  ! Statistiken in das Summary?
	logical statInSummary(Stat_Anzahl) ! welche Statistiken in das Summary?

	logical log_out_FE	  ! FolienElektronen-Statistik in das Summary?
	logical log_out_pfosten(2)! getroffene TD-'Pfosten' in das Summary?

c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

	COMMON n_outWhere
	COMMON LogFile,smallLogFile
	COMMON statsInSummary,statInSummary
	COMMON log_out_FE,log_out_pfosten


c-------------------------------------------------------------------------------
c		WELCHE FILES sollen erzeugt werden?
c-------------------------------------------------------------------------------

	logical write_geo	  ! .GEO-file schreiben?
	logical createPhysTab	  ! PAW-Gesamt-Tabelle (.PAW) erzeugen?
	logical createNtp	  ! Ntuple (.NTP) erzeugen?
	logical Fo_triggered	  ! nur Teilchen die die TD-Folie treffen in NTupel
	logical xM2_triggered	  ! nur Teilchen die MCP2-Ebene erreichen ins NTupel
	logical M2_triggered	  ! nur Teilchen die das MCP treffen ins NTupel
	logical NTP_S1xM2         ! Flugzeit bis zur MCP2-EBENE ins NTupel?
	logical NTP_times         ! sonstige Flugzeiten ins NTupel?
	logical NTP_FoM2Only	  ! nur TOF Folie-M2 ins NTupel? (ausser S1xM2)
	logical NTP_charge        ! Der Ladungszustand ins NTupel?
	logical NTP_lifetime      ! Die Lebensdauer ins NTupel?
	logical NTP_start    	  ! Die Startgroessen ...?
	logical NTP_stop     	  ! Die Stopgroessen ...?
	logical NTP_40mm     	  ! Die Groessen bei x=40mm ...?
	logical NTP_Folie    	  ! Everlust und Aufstreuungupel ...?
	logical NTP_steps    	  ! kleinste und groesste Schrittweiten ...?
	logical NTP_Koord    	  ! Die Trajektoriendaten ...?

	logical createTabellen		    ! Tabellen-files erzeugen?
	logical createTabelle(Stat_Anzahl)  ! welche Tabellen-files erzeugen?

	character TabExt(stat_Anzahl)*9	    ! Extensions der Tabellenfiles

	logical	smearS1Fo /.false./
	real	sigmaS1Fo /1.6/

c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

	COMMON write_geo,createPhysTab,createNtp          
	COMMON Fo_triggered,xM2_triggered,M2_triggered
	COMMON NTP_S1xM2,NTP_times,NTP_FoM2Only,NTP_charge,NTP_lifetime,NTP_start,NTP_stop
	COMMON NTP_40mm,NTP_Folie,NTP_steps,NTP_Koord
	COMMON createTabellen,createTabelle,statName,whatName,TabExt
	COMMON smearS1Fo,sigmaS1Fo

c-------------------------------------------------------------------------------
c		Fehlerkontrolle
c-------------------------------------------------------------------------------

	real	eps_x		! Fehlertoleranz bei Ortsberechnung
	real	eps_v		! Fehlertoleranz bei Geschw.Berechnung
	logical log_relativ	! relative Fehlerbetrachtung?

	integer maxStep		! maximale Anzahl an Integrationsschritten

	! real	  deltaE	in /  1  / (auch in initialize einbinden)

c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

	COMMON eps_x,eps_v,log_relativ
	COMMON maxStep

c-------------------------------------------------------------------------------
c		haeufig benutzte Faktoren
c-------------------------------------------------------------------------------

	real Energie_Faktor  ! Faktor bei Berechn. der Energie aus der Geschw.

c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

	COMMON Energie_Faktor


c-------------------------------------------------------------------------------
c		PHYSICA
c-------------------------------------------------------------------------------

	integer	par_Anzahl_used,statAnzahlPHY,whatAnzahlPHY
	integer parList(par_Anzahl),statList(stat_Anzahl),whatList(what_Anzahl)
	integer lengthParName

	logical statInPHYSICA(Stat_Anzahl) ! welche Statistiken in .PHYSICA file?
	logical whatInPHYSICA(What_Anzahl) ! welche Statistiken in .PHYSICA file?

	integer LwPerRec	! Recordlaenge in MU_nnnn.PHYSICA in Longwords
	parameter (LwPerRec = 50)

c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

	COMMON par_Anzahl_used,statAnzahlPHY,whatAnzahlPHY
	COMMON parList,statList,whatList
	COMMON lengthParName

	COMMON statInPHYSICA,whatInPHYSICA


c-------------------------------------------------------------------------------
c		Programmablauf
c-------------------------------------------------------------------------------

	real	x0(3),v0(3),E0  ! Startort, -geschwindigkeit und -energie
	real	lifetime	! individuelle Myon-Lebensdauer [ns]
	real	theta0		! 3D-Startwinkel gegen x_Achse
	real	phi0		! azimuthaler Startwinkel (y-Achse:0, z-Achse:90)

	real	x(3),t,v(3)	! Ort, Zeit, Geschwindigkeit
c	real	spin(3)		! Teichelspin (nicht benutzt)
	integer destiny		! die Codezahl fuer das Schicksal des Projektils

        integer start_nr(2)	! Startnummer der Teilchen (1) und der FE (2)
	integer GesamtZahl	! Gesamtzahl der Projektile
	integer SchleifenZahl	! Anzahl durchzufuehrender Schleifen
	integer SchleifenNr     ! Nummer der aktuellen Schleife
        integer	Steps		! Nummer des Integrationssteps

	real	dtsmall		! kleinster Zeitschritt fuer Integrationen
	integer n_dtSmall	! wie oft hat Teilchen dtSmall unterschritten
	integer n_dtsmall_Max	! wie oft wurde dtsmall max. unterschritten
	integer dtsmall_counter	! wieviele Teilchen haben dtsmall unterschritten
	integer maxBelowDtSmall

	integer LostInTD_counter! wieviele Teilchen wurden im TD abgeschrieben
	integer Lost_counter	! wieviele Teilchen wurden sonst noch abgeschrieben
	logical OneLoop		! genau eine Schleife
	logical	OneStartPerLoop ! Zufallsschleife macht genau einen Durchlauf

        logical log_percent

	logical Use_ACCEL	! ACCEL-Daten verwenden
	logical Use_MUTRACK	! 'FoilFile'-Daten verwenden
	logical fromScratch	! .NOT.(Use_ACCEL.OR.Use_MUTRACK)

	logical previousSettings ! Parametervorgaben von ACCEL uebernehmen?
	integer firstIndx(10),IndxIncr(10),parIndx(10)
	integer	eventNr		! korrespondierende Eventnummer im ACCEL-NTP

	logical guard		! Potential am Guardring frei variierbar?

	integer randomStarts_prevSim ! 'randomStarts' bei ACCEL und 'foilFile'
	integer seed		! fuer Zufallsgenerator

	logical reachedEndOfMap ! bei FolienMappe oder MCP2Mappe x=xmax erreicht

	logical gridInFrontOfFoil

c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

c Die benannten Common-Bloecke werden fuer die NTP-Ausgabe benoetigt!

c die separaten Commonblocks sind fuer die Routine HBNAME der CERN library
c wichtig wenn es darum geht, frueher erzeugte NTP einzulesen. Ansonsten kommt
c (zumindest auf der PSW264, auf der PSICLC u.U. nicht (-> Option 'align=all'
c beim FORTRAN Befehl auf der alpha)) z.B. die Fehlermeldung
c
c	Variable LIFETIME
c	***** ERROR in HBNAME : Address not word aligned :
c	Variable GEBIET
c	***** ERROR in HBNAME : Address not word aligned :
c	Variable T
c	***** ERROR in HBNAME : Address not word aligned :

	COMMON /gebiet/ gebiet,destiny	! Reihenfolge wichtig fuer NTupel!
	COMMON /lifetime/ lifetime
	COMMON /x0/ x0
	COMMON /v0/ v0
	COMMON /E0/ E0
	COMMON /theta0/ theta0,phi0
	COMMON /t/ t,x,v		! Reihenfolge wichtig fuer NTupel!
	COMMON /ntp_steps/ steps	! in MUTRACK wird noch weiteres angefuegt!

	COMMON /loop/ SchleifenNr
	COMMON start_Nr
	COMMON GesamtZahl,SchleifenZahl
	COMMON dtsmall, n_dtsmall, n_dtsmall_Max, dtsmall_counter
	COMMON maxBelowDtSmall
	COMMON LostInTD_counter,Lost_counter
	COMMON OneLoop, OneStartPerLoop

	COMMON log_percent
	COMMON Use_ACCEL,Use_MUTRACK,fromScratch
	COMMON previousSettings,firstIndx,IndxIncr,parIndx,eventNr
	COMMON guard
	COMMON randomStarts_prevSim
	COMMON /seed/ seed	! das Common /seed/ ist auch in den Routinen
				! 'GAUSS_VERTEILUNG' und 'GAUSS_VERTEILUG_THETA'
				! in MUTRACK.FOR definiert

	COMMON reachedEndOfMap
	COMMON /foilGrid/ gridInFrontOfFoil


c-------------------------------------------------------------------------------
c		Statistik
c-------------------------------------------------------------------------------

	integer	statTD(2,18)		 ! Statistik der Returncodes des TDs
	integer pfostenHit(75,2)	 ! Statistik der Pfostentreffen im TD (75 oder 45?)
	integer statDestiny(smallest_code_Nr:Gebiete_Anzahl*highest_code_Nr) 
					 ! Statistik der Teilchenschicksale

	real	statMem(9,stat_Anzahl)   ! Statistik der Ergebnisse der Bahnberechnung
	logical statNeeded(stat_Anzahl)	 ! welche Statistiken muessen fuer die
					 ! geforderten Informationen gefuehrt werden?

c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

	COMMON statTD,pfostenHit,statDestiny
	COMMON statMem,statNeeded


c-------------------------------------------------------------------------------
c		Ein- und  Ausgabekanaele
c-------------------------------------------------------------------------------

	INCLUDE 'mutrack$sourcedirectory:COM_LUNS.INC'

	integer*4 NTP_write, NTP_read
	parameter (NTP_write=5, NTP_read = NTP_write+1)


c-------------------------------------------------------------------------------
c		Datenausgabe
c-------------------------------------------------------------------------------

	INCLUDE 'mutrack$sourcedirectory:COM_OUTPUT.INC'

