diff --git a/doc/musrSim.pdf b/doc/musrSim.pdf index f17dd13..4c1f5e2 100644 Binary files a/doc/musrSim.pdf and b/doc/musrSim.pdf differ diff --git a/doc/musrSim.tex b/doc/musrSim.tex index f1498c1..56d04a7 100644 --- a/doc/musrSim.tex +++ b/doc/musrSim.tex @@ -277,10 +277,10 @@ care. logical volume and physical volume. Details can be found in {\sc Geant4} manual). \\ \begin{itemize} \item \emph{solid} (string) can be one of the G4VSolid.cc particular types, presently ``tubs'', ``cons'', - ``box'', ``trd'', ``sphere'', ``para'', + ``box'', ``trd'', ``sphere'', ``para'', ``polycone'' or it can be one of the specifically implemented solids by our program as ``uprofile'' (an U-profiled bar), ``alcSupportPlate'' (shape specific to ALC support plate), ``tubsbox'' - (a tube with a rectangular hole along its axis), "tubsboxsegm" + (a tube with a rectangular hole along its axis), ``tubsboxsegm'' (a volume that looks like an intersection of tube and box) and ``trd90y'' (a trd volume rotated by 90 degrees around $y$ axis in addition to the rotation requested by \emph{matrixName}), @@ -289,6 +289,15 @@ care. in Geant4 are presently supported, but it is relatively easy to implement a new kind of solids in the musrDetectorConstruction.cc class. + + The ``polycone'' in Geant4 can be defined in two ways, which have to be + distinguished in the musrSim macro file: + ``polyconeA'' corresponds to \\ + G4Polycone(solidName, phiStart, phiTotal, numZPlanes, zPlane[ ], rInner[ ], rOuter[ ])\\ + while ``polyconeB'' corresponds to \\ + G4Polycone(solidName, phiStart, phiTotal, numRZ, r[ ], z[ ]),\\ + where \emph{zPlane}, \emph{rInner}, \emph{rOuter}, \emph{r}, \emph{z} are arrays, which + have to be defined by the command ``/musr/command arrayDef''. \item \emph{name} (string) stands for the name of the volume. As the command ``/musr/command construct'' constructs three kinds of Geant4 classes/volumes (the solid, logical volume and physical @@ -344,6 +353,9 @@ care. vector (if the fourth float parameter behind the \emph{matrixName} is non-zero). All angles are specified in degrees. +\item{\bf /musr/command arrayDef \emph{arrayName} \emph{N} \emph{x$_1$} \emph{x$_2$} \ldots \emph{x$_N$}} \\ + Defines an array with an assigned name \emph{arrayName}, which has \emph{N} elements. + \item{\bf /musr/command region define \emph{regionName} \emph{logicalVolume}}\\ The ``G4Region'' can be created using this command, and a logical volume of the name \emph{logicalVolume} will be assigned to it. If the G4Region of the name diff --git a/include/musrDetectorConstruction.hh b/include/musrDetectorConstruction.hh index 0c3cac9..214870a 100644 --- a/include/musrDetectorConstruction.hh +++ b/include/musrDetectorConstruction.hh @@ -74,6 +74,8 @@ private: musrDetectorMessenger* detectorMessenger; // pointer to the Messenger std::map pointerToRotationMatrix; + std::map pointerToArray; + std::map::iterator iterArray; std::map pointerToField; std::map materialPropertiesTableMap; diff --git a/musrSimAna/musrAnalysis.cxx b/musrSimAna/musrAnalysis.cxx index a061f61..a34d4b5 100644 --- a/musrSimAna/musrAnalysis.cxx +++ b/musrSimAna/musrAnalysis.cxx @@ -35,6 +35,8 @@ void musrAnalysis::Loop(char* runChar, char* v1190FileName, Int_t nrEvents) //by b_branchname->GetEntry(ientry); //read only this branch if (fChain == 0) return; + std::cerr<<"musrSimAnalysis::Loop() : Analysing run "<second; counterMapType::const_iterator itTwo = allCounterMap.find(abs(iChn2)); if (itTwo==allCounterMap.end()) { - std::cout<<" Pointer to coincidence counter ("< S T O P"< S T O P"<maxArrayLength) { + G4cout<<"musrDetectorConstruction: arrayDef: currently the array can not have more than "< was it defined?"<second; + } + G4cout<<"zPLANE="; for (int iiiii=0; iiiii was it defined?"<second; + } + G4cout<<"rINNER="; for (int iiiii=0; iiiii was it defined?"<second; + } + G4cout<<"rOUTER="; for (int iiiii=0; iiiii