Skip to content
Snippets Groups Projects
generate_eps 4.38 KiB
Newer Older
  • Learn to ignore specific revisions
  • Whitney Armstrong's avatar
    Whitney Armstrong committed
    #!/bin/bash
    
    #trignometry
    sin ()
    {
        echo "scale=5;s($1)" | bc -l
    }
    
    cos ()
    {
        echo "scale=5;c($1)" | bc -l
    }
    
    tan ()
    {
        echo "scale=5;s($1)/c($1)" | bc -l
    }
    
    
    function print_the_help {
      echo "USAGE: $0 -i <PRIM_FILE>  "
      echo "  OPTIONS: "
      echo "            -t,--tag           filename tag (default: view1)"
      exit 
    }
    
    FILE_TAG="view12"
    INPUT_FILE="../../g4_0000.prim"
    
    
    POSITIONAL=()
    while [[ $# -gt 0 ]]
    do
      key="$1"
    
      case $key in
        -h|--help)
          shift # past argument
          print_the_help
          ;;
        -t|--tag)
          FILE_TAG="$2"
          shift # past argument
          shift # past value
          ;;
        -i|--input)
          INPUT_FILE="$2"
          shift # past argument
          shift # past value
          ;;
        *)    # unknown option
          #POSITIONAL+=("$1") # save it in an array for later
          echo "unknown option $1"
          print_the_help
          shift # past argument
          ;;
      esac
    done
    set -- "${POSITIONAL[@]}" # restore positional parameters
    
    # units are mm
    
    echo "view12 produces a series of slightly rotated XY slices a different z locations. Along beamline"
    
    # slice at z = 2m
    # note the offset has to change with sign of the direction to cut in the opposite direction.
    dawncut 0  0  1  2005 ${INPUT_FILE} ${FILE_TAG}b_temp0.prim 
    dawncut 0  0 -1 -2000 ${FILE_TAG}b_temp0.prim  ${FILE_TAG}b.prim
    dawn -d ${FILE_TAG}b.prim 
    ps2pdf ${FILE_TAG}b.eps ${FILE_TAG}b_full.pdf
    gs -o ${FILE_TAG}b.pdf -sDEVICE=pdfwrite \
      -c "[/CropBox [50 175 550 675] /PAGES pdfmark" \
      -f ${FILE_TAG}b_full.pdf
    pdftoppm ${FILE_TAG}b.pdf ${FILE_TAG}b -png -singlefile -cropbox
    
    original_file_tag="${FILE_TAG}"
    
    make_slice(){
      local zpos="$1"
      local tagnum=$(printf "%04d" ${zpos})
      local FILE_TAG="${original_file_tag}a${tagnum}"
      dawncut 0 0 1 ${zpos}1 ${INPUT_FILE} ${FILE_TAG}_temp0.prim 
      dawncut 0 0 -1 -${zpos}0  ${FILE_TAG}_temp0.prim  ${FILE_TAG}.prim
      dawn -d ${FILE_TAG}.prim 
      ps2pdf ${FILE_TAG}.eps ${FILE_TAG}_full.pdf
      gs -o ${FILE_TAG}.pdf -sDEVICE=pdfwrite \
        -c "[/CropBox [50 175 550 675] /PAGES pdfmark" \
        -f ${FILE_TAG}_full.pdf
          pdftoppm ${FILE_TAG}.pdf ${FILE_TAG} -png -singlefile -cropbox
      rm "${FILE_TAG}_temp0.prim"
      rm "${FILE_TAG}.prim"
    }
    for zzz in $(seq 50 50 2000) ;
    do
      make_slice ${zzz} & 
    done
    
    wait
    
    
    
    #dawncut 0  1 0 10 ${INPUT_FILE} ${FILE_TAG}c_temp0.prim 
    #dawncut 0 -1 0 0 ${FILE_TAG}c_temp0.prim  ${FILE_TAG}c.prim
    #dawn -d ${FILE_TAG}c.prim 
    #ps2pdf ${FILE_TAG}c.eps ${FILE_TAG}c_full.pdf
    #gs -o ${FILE_TAG}c.pdf -sDEVICE=pdfwrite \
    #  -c "[/CropBox [50 175 550 675] /PAGES pdfmark" \
    #  -f ${FILE_TAG}c_full.pdf
    #pdftoppm ${FILE_TAG}c.pdf ${FILE_TAG}c -png -singlefile -cropbox
    #
    ## slice at z = -1m
    #dawncut 0 0 1 -1000 ${INPUT_FILE} ${FILE_TAG}d_temp0.prim 
    #dawncut 0 0 -1 1001 ${FILE_TAG}d_temp0.prim  ${FILE_TAG}d.prim
    #dawn -d ${FILE_TAG}d.prim 
    #ps2pdf ${FILE_TAG}d.eps ${FILE_TAG}d_full.pdf
    #gs -o ${FILE_TAG}d.pdf -sDEVICE=pdfwrite \
    #  -c "[/CropBox [50 175 550 675] /PAGES pdfmark" \
    #  -f ${FILE_TAG}d_full.pdf
    #pdftoppm ${FILE_TAG}d.pdf ${FILE_TAG}d -png -singlefile -cropbox
    #
    ## slice at z = -2m
    #dawncut 0 0 1 -2000 ${INPUT_FILE} ${FILE_TAG}e_temp0.prim 
    #dawncut 0 0 -1 2001 ${FILE_TAG}e_temp0.prim  ${FILE_TAG}e.prim
    #dawn -d ${FILE_TAG}e.prim 
    #ps2pdf ${FILE_TAG}e.eps ${FILE_TAG}e_full.pdf
    #gs -o ${FILE_TAG}e.pdf -sDEVICE=pdfwrite \
    #  -c "[/CropBox [50 175 550 675] /PAGES pdfmark" \
    #  -f ${FILE_TAG}e_full.pdf
    #pdftoppm ${FILE_TAG}e.pdf ${FILE_TAG}e -png -singlefile -cropbox
    
    
    #https://geant4.kek.jp/~tanaka/DAWN/About_DAWNCUT.html
    # % dawncut a b c d input-file [output-file]
    #
    #       input-file : Source DAWN-format file describing a 3D scene.
    #
    #       output-file: Output DAWN-format file describing a plane-clipped 
    #                    3D scene.  The default output stream is stdout.
    #
    #       a, b, c, d : Parameters  a, b, c, and d  are double values to
    #                    define a clipping plane described with the following 
    #                    equation: 
    #
    #                       ax + by + cz + d = 0. 
    #
    #                    Vector (a,b,c) defines the normal vector of 
    #                    the clipping plane.  
    #                    3D scene data in the half space at the front side 
    #                    of the clipping plane are clipped out and erased. 
    #                    The normal vector (a,b,c) needs not be a unit vector. 
    #                    If it is a unit vector, parameter "d" gives distance 
    #                    between the clipping plane and origin (0,0,0).