diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index c11ac3397247a0a4a0510325caf364c51fbf6336..4571bedad7c2b0673f0b1c03b6c47a268fdfd8b6 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -33,7 +33,6 @@ stages:
   - build
   - test
   - docs
-  - test 
   - collect
   - finalize 
   - deploy
@@ -77,22 +76,18 @@ build:simple:
     - mkdir -p build && cd build && cmake ../. -DCMAKE_INSTALL_PREFIX=/usr/local && make -j20 && make install  && cd ..
     - echo "Build successful."
 
+
 .views:
   stage: docs
   before_script:
     - source .local/bin/env.sh
-      #    - sed -i 's?<support inside?<\!--support inside?' compact/ecal_barrel_hybrid.xml 
-      #    - sed -i 's?</support>?</support-->?' compact/ecal_barrel_hybrid.xml
-      #    - sed -i 's?<fiber material?<\!--fiber material?' compact/ecal_barrel_interlayers.xml 
-      #    - sed -i 's?</fiber>?</fiber-->?' compact/ecal_barrel_interlayers.xml
-      #    - echo $DETECTOR_PATH
-      #    - cp compact/ecal_barrel_interlayers.xml ${DETECTOR_PATH}/compact/ecal_barrel_interlayers.xml
     - env
     - pip3 install psutil
   needs:
     - ["common:detector"]
 
 include:
+  - local: 'views/generate_prim_files.yml'
   - local: 'views/view1.yml'
   - local: 'views/view2.yml'
   - local: 'views/view3.yml'
diff --git a/bin/generate_prim_file b/bin/generate_prim_file
new file mode 100755
index 0000000000000000000000000000000000000000..2274f06101c6293258debbdcf18aa4d12deb5116
--- /dev/null
+++ b/bin/generate_prim_file
@@ -0,0 +1,156 @@
+#!/usr/local/bin/python
+
+# same as make_dawn_views but stops at generating the prim file.
+# W. Armstrong (ANL), original bash script
+# C. Peng (ANL), translate to python and add flexible run time for simulation
+
+import os
+import signal
+import subprocess
+import argparse
+import atexit
+import time
+from datetime import datetime
+import fcntl
+import psutil
+
+
+def readline_nonblocking(output):
+    fd = output.fileno()
+    fl = fcntl.fcntl(fd, fcntl.F_GETFL)
+    fcntl.fcntl(fd, fcntl.F_SETFL, fl | os.O_NONBLOCK)
+    try:
+        return output.readline()
+    except:
+        return ''
+
+
+# arguments
+parser = argparse.ArgumentParser()
+
+parser.add_argument('-c', '--compact-file', type=str, dest='compact',
+        default=os.path.join(os.environ.get('DETECTOR_PATH', '.'), 'athena.xml'),
+        help='Top level compact file for detectors')
+
+parser.add_argument('-s', '--skip', type=int,
+        default=0,
+        help='Number of events number to skip in the input')
+
+parser.add_argument('-i', '--input', type=str,
+        default='scripts/input_data/few_events.hepmc',
+        help='Input hepmc file')
+
+parser.add_argument('-o', '--output-dir', type=str, dest='out_dir',
+        default='sim_output',
+        help='output directory')
+
+parser.add_argument('-D', '--detector-only', action='store_true', dest='detector_only',
+        help='only generate the prim files for the detector geometry')
+
+parser.add_argument('-t', '--tag', type=str,dest='file_tag',
+        default='view',
+        help='Output file tag')
+
+parser.add_argument('--timeout', type=int,
+        default=60,
+        help='Timeout in seconds')
+        
+parser.add_argument('passthrough', nargs='*')
+
+args = parser.parse_args()
+
+macro = 'macro/dawn_picture.mac' if args.detector_only else 'macro/dawn_picture2.mac'
+
+# raise error if cannot create a temporary working dir
+# os.makedirs('dawn_view_tmp', exist_ok=False)
+os.makedirs(args.out_dir, exist_ok=True)
+
+# use absolute path so the chdir does not affect them
+args.input = os.path.abspath(args.input)
+args.out_dir = os.path.abspath(args.out_dir)
+args.compact = os.path.abspath(args.compact)
+macro = os.path.abspath(macro)
+
+prim_file = 'g4_0000.prim'
+dawn_env = os.environ.copy()
+dawn_env['DAWN_BATCH'] = 'a'
+# sdir = os.path.dirname(os.path.realpath(__file__))
+
+# Using a python warpper such as npsim introduces some problem in managing the subprocess.
+# The process1 managed by subprocess will generate another process with proc2_pid = proc1_pid + 1, which will not
+# be terminated by terminating or killing the process1.
+# In addition, running Geant4 with vis mode will never exit automatically (it waits for input).
+# Thus the created process 2 will occupy the system resources.
+sim_cmd = ['npsim', '--runType', 'vis',
+        '--compact', args.compact,
+        '--inputFiles', args.input,
+        '--outputFile', 'derp.root',
+        '--numberOfEvents', '1',
+        '--skipNEvents', str(args.skip),
+        '--macroFile', macro]
+
+start = datetime.now()
+elapse = datetime.now() - start
+last_update = datetime.now()
+finished = False
+
+# run simulation
+print(' '.join(sim_cmd))
+p = subprocess.Popen(args=sim_cmd, env=dawn_env,
+                     stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
+__child_pid = p.pid
+while elapse.seconds < args.timeout:
+    line = readline_nonblocking(p.stdout)
+    elapse = datetime.now() - start
+    time_left = args.timeout - elapse.seconds
+    time_str = '[{:02d}:{:02d}]'.format(elapse.seconds // 60, elapse.seconds % 60)
+
+    if time_left < 10:
+        print('{} === TIMEOUT ===: Terminating in {:d} seconds'.format(time_str, time_left))
+
+    if line:
+        decoded_line = line.decode('utf-8').strip()
+        print('{} {}'.format(time_str, decoded_line))
+        # what we are looking for
+        if decoded_line == 'File  {}  is generated.'.format(prim_file):
+            print('{} === FINISHED ===: Got the prim file, terminating.'.format(time_str))
+            finished = True
+            break
+        if decoded_line == 'Idle>':
+            p.stdin.write(b'exit')
+            break
+        # do not sleep
+        continue
+
+    # ended early before file
+    if p.poll() is not None:
+        print(p.poll())
+        break
+
+    time.sleep(1)
+
+p.kill()
+# use to kill the subprocess generated from the python wrapper
+# this is unsafe so maybe more checks required
+for proc in psutil.process_iter():
+    pinfo = proc.as_dict(attrs=['pid', 'name', 'create_time'])
+    if pinfo['pid'] == p.pid + 1 and pinfo['name'] == 'python':
+        print('kill {}, generated from {}'.format(pinfo, p.pid))
+        os.kill(pinfo['pid'], signal.SIGTERM)
+
+line = b'stderr outputs:\n'
+while line:
+    print(line.decode('utf-8'), end='')
+    line = readline_nonblocking(p.stderr)
+
+if finished:
+    print('Simulation finished')
+else:
+    print('Simulation failed')
+    exit(1)
+
+# move the prim files (which can be quite large)
+# to the local pipeline storage path
+os.system('mv g4_0000.prim {}/{}.prim'.format(args.out_dir,args.file_tag))
+
+
diff --git a/bin/make_dawn_views b/bin/make_dawn_views
index 279119e8ceef6fb41cbd9b79933c71921932e52f..671527b5697b37cd080cd806b3d06d22d7bb11bb 100755
--- a/bin/make_dawn_views
+++ b/bin/make_dawn_views
@@ -36,8 +36,8 @@ parser.add_argument('-s', '--skip', type=int,
         default=0,
         help='Number of events number to skip in the input')
 
-parser.add_argument('-i', '--input', type=str,
-        default='scripts/input_data/few_events.hepmc',
+parser.add_argument('-i', '--input', type=str, dest='input',
+        default='sim_output',
         help='Input hepmc file')
 
 parser.add_argument('-o', '--output-dir', type=str, dest='out_dir',
@@ -51,7 +51,7 @@ parser.add_argument('-d', '--dawn-dir', type=str, dest='dawn_dir',
         default='scripts/view1',
         help='Directory to dawn script dir (with .DAWN files and a generate_eps script)')
 
-parser.add_argument('-t', '--tag', type=str,
+parser.add_argument('-t', '--tag', type=str,dest='file_tag',
         default='view',
         help='Output file tag')
 
@@ -80,90 +80,20 @@ dawn_env = os.environ.copy()
 dawn_env['DAWN_BATCH'] = 'a'
 # sdir = os.path.dirname(os.path.realpath(__file__))
 
-# Using a python warpper such as npsim introduces some problem in managing the subprocess.
-# The process1 managed by subprocess will generate another process with proc2_pid = proc1_pid + 1, which will not
-# be terminated by terminating or killing the process1.
-# In addition, running Geant4 with vis mode will never exit automatically (it waits for input).
-# Thus the created process 2 will occupy the system resources.
-sim_cmd = ['npsim', '--runType', 'vis',
-        '--compact', args.compact,
-        '--inputFiles', args.input,
-        '--outputFile', 'derp.root',
-        '--numberOfEvents', '1',
-        '--skipNEvents', str(args.skip),
-        '--macroFile', macro]
-
-start = datetime.now()
-elapse = datetime.now() - start
-last_update = datetime.now()
-finished = False
-
-# run simulation
-print(' '.join(sim_cmd))
-p = subprocess.Popen(args=sim_cmd, env=dawn_env,
-                     stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
-__child_pid = p.pid
-while elapse.seconds < args.timeout:
-    line = readline_nonblocking(p.stdout)
-    elapse = datetime.now() - start
-    time_left = args.timeout - elapse.seconds
-    time_str = '[{:02d}:{:02d}]'.format(elapse.seconds // 60, elapse.seconds % 60)
-
-    if time_left < 10:
-        print('{} === TIMEOUT ===: Terminating in {:d} seconds'.format(time_str, time_left))
-
-    if line:
-        decoded_line = line.decode('utf-8').strip()
-        print('{} {}'.format(time_str, decoded_line))
-        # what we are looking for
-        if decoded_line == 'File  {}  is generated.'.format(prim_file):
-            print('{} === FINISHED ===: Got the prim file, terminating.'.format(time_str))
-            finished = True
-            break
-        if decoded_line == 'Idle>':
-            p.stdin.write(b'exit')
-            break
-        # do not sleep
-        continue
-
-    # ended early before file
-    if p.poll() is not None:
-        print(p.poll())
-        break
-
-    time.sleep(1)
-
-p.kill()
-# use to kill the subprocess generated from the python wrapper
-# this is unsafe so maybe more checks required
-for proc in psutil.process_iter():
-    pinfo = proc.as_dict(attrs=['pid', 'name', 'create_time'])
-    if pinfo['pid'] == p.pid + 1 and pinfo['name'] == 'python':
-        print('kill {}, generated from {}'.format(pinfo, p.pid))
-        os.kill(pinfo['pid'], signal.SIGTERM)
-
-line = b'stderr outputs:\n'
-while line:
-    print(line.decode('utf-8'), end='')
-    line = readline_nonblocking(p.stderr)
-
-if finished:
-    print('Simulation finished')
-else:
-    print('Simulation failed')
-    exit(1)
-
 
 # generate DAWN images
-prim_file = os.path.abspath(prim_file)
+out_dir = os.path.abspath(args.out_dir)
+input_file = os.path.abspath(args.input)
+#prim_file = '{}/{}.prim'.format(input_dir,args.file_tag)
+#prim_file = os.path.abspath(prim_file)
 owd = os.getcwd()
 os.chdir(args.dawn_dir)
 subprocess.run(['pwd'])
-subprocess.run(['./generate_eps', '-t', args.tag, '-i', prim_file] + args.passthrough)
+subprocess.run(['./generate_eps', '-t', args.file_tag, '-i', input_file] + args.passthrough)
 subprocess.run(['ls', '-lrth'])
 
 # upload the results
-os.system('cp *.pdf {}'.format(args.out_dir))
-os.system('cp *.png {}'.format(args.out_dir))
+os.system('cp *.pdf {}'.format(out_dir))
+os.system('cp *.png {}'.format(out_dir))
 os.chdir(owd)
 
diff --git a/scripts/view11/.DAWN_1.history b/scripts/view11/.DAWN_1.history
new file mode 100644
index 0000000000000000000000000000000000000000..20c06d60619ab0c7a860b06189931fcb2f88ea99
--- /dev/null
+++ b/scripts/view11/.DAWN_1.history
@@ -0,0 +1,31 @@
+1.34392e+07
+90
+180
+0
+0
+0
+25000
+2.0
+1
+0.001
+0
+1
+1
+1
+0.5
+0.5
+0.5
+19
+71
+0.001
+0.001
+0.001
+3
+71
+0.001
+0
+0
+1
+evince
+0
+0
diff --git a/scripts/view12/.DAWN_1.history b/scripts/view12/.DAWN_1.history
new file mode 100644
index 0000000000000000000000000000000000000000..b38cb89f94a0d637cb305e9abfea834a2afba6b7
--- /dev/null
+++ b/scripts/view12/.DAWN_1.history
@@ -0,0 +1,31 @@
+1.34392e+07
+0
+180
+0
+0
+0
+0
+8
+1
+0.001
+0
+1
+1
+1
+0.5
+0.5
+0.5
+19
+71
+0.01
+0.01
+0.01
+3
+70
+0.01
+1
+1
+1
+evince
+0
+0
diff --git a/scripts/view12/generate_eps b/scripts/view12/generate_eps
index 38ebec3c7d3ce6bcda4a52cbeb2136b57d57ba4e..fd1bcb9754b546abced21c1ddbcc68e36a3f6e3d 100755
--- a/scripts/view12/generate_eps
+++ b/scripts/view12/generate_eps
@@ -66,17 +66,6 @@ set -- "${POSITIONAL[@]}" # restore positional parameters
 
 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(){
diff --git a/scripts/view13/generate_eps b/scripts/view13/generate_eps
index be6ce788fb8bb83e8c9a5df9f71e5f17d0967df4..27ffee13b5f6a767c4563f0c11d2be366620b941 100755
--- a/scripts/view13/generate_eps
+++ b/scripts/view13/generate_eps
@@ -9,7 +9,7 @@ function print_the_help {
   exit 
 }
 
-FILE_TAG="view2"
+FILE_TAG="view13"
 INPUT_FILE="g4_0000.prim"
 
 
diff --git a/scripts/view14/.DAWN_1.history b/scripts/view14/.DAWN_1.history
new file mode 100644
index 0000000000000000000000000000000000000000..40b2c0b3674751633c8e38baac1e2ccad2b6ad5b
--- /dev/null
+++ b/scripts/view14/.DAWN_1.history
@@ -0,0 +1,31 @@
+0.0
+72.5
+189.5
+0
+0
+0
+1500
+55
+3
+0.001
+0
+1
+1
+1
+0.5
+0.5
+0.5
+25.5
+71
+0.001
+0.001
+0.001
+1
+70
+0.001
+1
+0
+1
+evince
+0
+0
diff --git a/scripts/view14/generate_eps b/scripts/view14/generate_eps
index dc86760e4e48da9559804264fa7e64dbc3315e34..0e5286c44e202b1bf4d50b6aed1c1ef7b80a9230 100755
--- a/scripts/view14/generate_eps
+++ b/scripts/view14/generate_eps
@@ -69,22 +69,6 @@ set -- "${POSITIONAL[@]}" # restore positional parameters
 
 # units are mm
 
-echo "view14 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  10005 ${INPUT_FILE} ${FILE_TAG}b_temp0.prim 
-dawncut 0  0 -1 -1000 ${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
-
-echo "done ..."
-
-
 original_file_tag="${FILE_TAG}"
 
 make_slice(){
diff --git a/scripts/view15/.DAWN_1.history b/scripts/view15/.DAWN_1.history
new file mode 100644
index 0000000000000000000000000000000000000000..d6c74628cbc8fa69bf28737343c176d4ecb4dfef
--- /dev/null
+++ b/scripts/view15/.DAWN_1.history
@@ -0,0 +1,31 @@
+0.0
+72.5
+189.5
+0
+0
+0
+1500
+50
+3
+0.001
+0
+1
+1
+1
+0.5
+0.5
+0.5
+25.5
+71
+0.001
+0.001
+0.001
+1
+70
+0.001
+1
+0
+1
+evince
+0
+0
diff --git a/scripts/view2/.DAWN_1.history b/scripts/view2/.DAWN_1.history
index 16311bf7cd15883906fe319c6369ead93e7a9dc8..b38cb89f94a0d637cb305e9abfea834a2afba6b7 100644
--- a/scripts/view2/.DAWN_1.history
+++ b/scripts/view2/.DAWN_1.history
@@ -6,7 +6,7 @@
 0
 0
 8
-3
+1
 0.001
 0
 1
diff --git a/scripts/view5/.DAWN_1.history b/scripts/view5/.DAWN_1.history
new file mode 100644
index 0000000000000000000000000000000000000000..cb7154560978f5a1cb6cc3ac4ed271493eb7e15d
--- /dev/null
+++ b/scripts/view5/.DAWN_1.history
@@ -0,0 +1,31 @@
+1.34392e+07
+0
+0
+1
+0
+0
+491.1
+1.2
+5
+0.001
+0
+1
+1
+1
+0.5
+0.5
+0.5
+19
+71
+0.01
+0.01
+0.01
+3
+70
+0.01
+1
+1
+1
+evince
+0
+0
diff --git a/scripts/view6/.DAWN_1.history b/scripts/view6/.DAWN_1.history
new file mode 100644
index 0000000000000000000000000000000000000000..9be90fd2efd6f3687a414ee881cacae844c7c260
--- /dev/null
+++ b/scripts/view6/.DAWN_1.history
@@ -0,0 +1,31 @@
+1.34392e+07
+0
+180
+0
+0
+0
+0
+8.6
+1
+0.001
+0
+1
+1
+1
+0.5
+0.5
+0.5
+19
+71
+0.01
+0.01
+0.01
+3
+70
+0.01
+1
+1
+1
+evince
+0
+0
diff --git a/views/generate_prim_files.yml b/views/generate_prim_files.yml
new file mode 100644
index 0000000000000000000000000000000000000000..e511aa2300f192a1d377b58fef41a2c01997a900
--- /dev/null
+++ b/views/generate_prim_files.yml
@@ -0,0 +1,38 @@
+view_prim:detector_only:
+  extends: .views
+  stage: test
+  script:
+    - ./bin/generate_prim_file -o ${LOCAL_DATA_PATH} -D -t detector_view
+    - ls -lrth && ls -lrth ${LOCAL_DATA_PATH}
+
+view_prim:ev001:
+  extends: .views
+  stage: test
+  rules:
+    - if: '$DETECTOR_EVENT_VIEWS == "ON"'
+  script:
+    - ./bin/generate_prim_file -o ${LOCAL_DATA_PATH} -t view_ev001 -s 1
+
+view_prim:ev002:
+  extends: .views
+  stage: test
+  rules:
+    - if: '$DETECTOR_EVENT_VIEWS == "ON"'
+  script:
+    - ./bin/generate_prim_file -o ${LOCAL_DATA_PATH} -t view_ev002 -s 2
+
+view_prim:ev003:
+  extends: .views
+  stage: test
+  rules:
+    - if: '$DETECTOR_EVENT_VIEWS == "ON"'
+  script:
+    - ./bin/generate_prim_file -o ${LOCAL_DATA_PATH} -t view_ev003 -s 3
+
+view_prim:ev004:
+  extends: .views
+  stage: test
+  rules:
+    - if: '$DETECTOR_EVENT_VIEWS == "ON"'
+  script:
+    - ./bin/generate_prim_file -o ${LOCAL_DATA_PATH} -t view_ev004 -s 4
diff --git a/views/view1.yml b/views/view1.yml
index cbcdedd7cad40c6f07e909d6916079411247f1f8..4d85b5c709808b9c0a4047af0423997375a71a58 100644
--- a/views/view1.yml
+++ b/views/view1.yml
@@ -1,24 +1,33 @@
 dawn_view_01:detector:
   extends: .views
+  needs:
+    - job: view_prim:detector_only
+      optional: false
   script:
-    - ./bin/make_dawn_views -t view01 -d scripts/view1 -D
+    - ./bin/make_dawn_views -i ${LOCAL_DATA_PATH}/detector_view.prim -t view01 -d scripts/view1 -D
+
 dawn_view_01:ev001:
   extends: .views
   rules:
     - if: '$DETECTOR_EVENT_VIEWS == "ON"'
+  needs:
+    - job: view_prim:ev001
+      optional: true
   script:
-    - ./bin/make_dawn_views -t view01_ev001 -d scripts/view1 -s 1
+    - ./bin/make_dawn_views -i ${LOCAL_DATA_PATH}/view_ev001.prim -t view01_ev001 -d scripts/view1 -s 1
+
 dawn_view_01:ev002:
   extends: .views
   rules:
     - if: '$DETECTOR_EVENT_VIEWS == "ON"'
+  needs:
+    - job: view_prim:ev002
+      optional: true
   script:
-    - ./bin/make_dawn_views -t view01_ev002 -d scripts/view1 -s 2
+    - ./bin/make_dawn_views -i ${LOCAL_DATA_PATH}/view_ev002.prim -t view01_ev002 -d scripts/view1 -s 2
 
 view_01:
   stage: collect
-  rules:
-    - if: '$CI_SERVER_HOST == "eicweb.phy.anl.gov"' 
   needs:
     - job: dawn_view_01:detector
       optional: false
diff --git a/views/view11.yml b/views/view11.yml
index ca6905bace5484fb616b16905a5ef2972453e167..146eef978a3f4140f1befc5e4f91ff94dc65bfdd 100644
--- a/views/view11.yml
+++ b/views/view11.yml
@@ -1,37 +1,59 @@
 dawn_view_11:detector:
   extends: .views
+  needs:
+    - job: view_prim:detector_only
+      optional: false
   script:
-    - ./bin/make_dawn_views -t view11 -d scripts/view11 -D
+    - ./bin/make_dawn_views -i ${LOCAL_DATA_PATH}/detector_view.prim -t view11 -d scripts/view11 -D
+
 dawn_view_11:ev000:
   rules:
     - if: '$DETECTOR_EVENT_VIEWS == "ON"'
   extends: .views
+  needs:
+    - job: view_prim:ev001
+      optional: true
   script:
-    - ./bin/make_dawn_views -t view11 -d scripts/view11
+    - ./bin/make_dawn_views -i ${LOCAL_DATA_PATH}/view_ev001.prim  -t view11 -d scripts/view11
+
 dawn_view_11:ev001:
   rules:
     - if: '$DETECTOR_EVENT_VIEWS == "ON"'
   extends: .views
+  needs:
+    - job: view_prim:ev001
+      optional: true
   script:
-    - ./bin/make_dawn_views -t view11 -d scripts/view11 -s 1
+    - ./bin/make_dawn_views -i ${LOCAL_DATA_PATH}/view_ev002.prim  -t view11 -d scripts/view11 -s 1
+
 dawn_view_11:ev002:
   rules:
     - if: '$DETECTOR_EVENT_VIEWS == "ON"'
   extends: .views
+  needs:
+    - job: view_prim:ev002
+      optional: true
   script:
-    - ./bin/make_dawn_views -t view11 -d scripts/view11 -s 2
+    - ./bin/make_dawn_views -i ${LOCAL_DATA_PATH}/view_ev003.prim  -t view11 -d scripts/view11 -s 2
 dawn_view_11:ev003:
   rules:
     - if: '$DETECTOR_EVENT_VIEWS == "ON"'
   extends: .views
+  needs:
+    - job: view_prim:ev003
+      optional: true
   script:
-    - ./bin/make_dawn_views -t view11 -d scripts/view11 -s 3
+    - ./bin/make_dawn_views -i ${LOCAL_DATA_PATH} -t view11 -d scripts/view11 -s 3
+
 dawn_view_11:ev004:
   rules:
     - if: '$DETECTOR_EVENT_VIEWS == "ON"'
   extends: .views
+  needs:
+    - job: view_prim:ev004
+      optional: true
   script:
-    - ./bin/make_dawn_views -t view11 -d scripts/view11 -s 4
+    - ./bin/make_dawn_views -i ${LOCAL_DATA_PATH} -t view11 -d scripts/view11 -s 4
 
 view_11:
   stage: collect
diff --git a/views/view12.yml b/views/view12.yml
index b3da026ae3fe82a2328843e52cbd0709386c3d5e..8b3969c1989d41758a51cc09b36da33c73bb6ff3 100644
--- a/views/view12.yml
+++ b/views/view12.yml
@@ -1,7 +1,10 @@
 dawn_view_12:detector:
   extends: .views
+  needs:
+    - job: view_prim:detector_only
+      optional: false
   script:
-    - ./bin/make_dawn_views -t view12 -d scripts/view12 -D -- ${SLICE}
+    - ./bin/make_dawn_views -i ${LOCAL_DATA_PATH}/detector_view.prim -t view12 -d scripts/view12 -D -- ${SLICE}
     - ls -lrth *
     - ls -lrth images/*
   parallel:
diff --git a/views/view13.yml b/views/view13.yml
index 9360140c267611ea7f199280a567ec2ae871c214..658c63b4f1a3df1cb155d33f2a750a586d2c8889 100644
--- a/views/view13.yml
+++ b/views/view13.yml
@@ -1,7 +1,10 @@
 dawn_view_13:detector:
   extends: .views
+  needs:
+    - job: view_prim:detector_only
+      optional: false
   script:
-    - ./bin/make_dawn_views -t view13 -d scripts/view13 -D
+    - ./bin/make_dawn_views -i ${LOCAL_DATA_PATH}/detector_view.prim -t view13 -d scripts/view13 -D
 
 view_13:
   stage: collect
diff --git a/views/view14.yml b/views/view14.yml
index 77b1651d1d93c8fc4e323f74c344c7a3e45d524d..8aae5f66dbfd42baf79998ffa2a24e5b3c3de1dd 100644
--- a/views/view14.yml
+++ b/views/view14.yml
@@ -1,7 +1,10 @@
 dawn_view_14:detector:
   extends: .views
+  needs:
+    - job: view_prim:detector_only
+      optional: false
   script:
-    - ./bin/make_dawn_views -t view14 -d scripts/view14 -D -- ${SLICE}
+    - ./bin/make_dawn_views -i ${LOCAL_DATA_PATH}/detector_view.prim -t view14 -d scripts/view14 -D -- ${SLICE}
     - ls -lrth *
     - ls -lrth images/*
   parallel:
diff --git a/views/view15.yml b/views/view15.yml
index 9d24e940732db8ba52649d7a0668d6ad92bfe930..e1c861250532e740568892d72555eb5a845ae98c 100644
--- a/views/view15.yml
+++ b/views/view15.yml
@@ -1,7 +1,10 @@
 dawn_view_15:detector:
   extends: .views
+  needs:
+    - job: view_prim:detector_only
+      optional: false
   script:
-    - ./bin/make_dawn_views -t view15 -d scripts/view15 -D -- ${SLICE}
+    - ./bin/make_dawn_views -i ${LOCAL_DATA_PATH}/detector_view.prim -t view15 -d scripts/view15 -D -- ${SLICE}
     - ls -lrth *
     - ls -lrth images/*
   parallel:
diff --git a/views/view2.yml b/views/view2.yml
index fafb8adcd431e6eb78b31bd5c6a95530b750fcbf..f758f7de6d95b5dfa5321a7687c2d389124281c9 100644
--- a/views/view2.yml
+++ b/views/view2.yml
@@ -1,25 +1,40 @@
 dawn_view_02:detector:
   extends: .views
+  needs:
+    - job: view_prim:detector_only
+      optional: false
   script:
-    - ./bin/make_dawn_views -t view02 -d scripts/view2 -D
+    - ./bin/make_dawn_views -i ${LOCAL_DATA_PATH}/detector_view.prim -t view02 -d scripts/view2 -D
+
 dawn_view_02:ev001:
   extends: .views
   rules:
     - if: '$DETECTOR_EVENT_VIEWS == "ON"'
+  needs:
+    - job: view_prim:ev001
+      optional: true
   script:
-    - ./bin/make_dawn_views -t view02_ev001 -d scripts/view2 -s 1
+    - ./bin/make_dawn_views -i ${LOCAL_DATA_PATH}/view_ev001.prim -t view02_ev001 -d scripts/view2 -s 1
+
 dawn_view_02:ev002:
   extends: .views
   rules:
     - if: '$DETECTOR_EVENT_VIEWS == "ON"'
+  needs:
+    - job: view_prim:ev002
+      optional: true
   script:
-    - ./bin/make_dawn_views -t view02_ev002 -d scripts/view2 -s 2
+    - ./bin/make_dawn_views -i ${LOCAL_DATA_PATH}/view_ev002.prim  -t view02_ev002 -d scripts/view2 -s 2
+
 dawn_view_02:ev003:
   extends: .views
   rules:
     - if: '$DETECTOR_EVENT_VIEWS == "ON"'
+  needs:
+    - job: view_prim:ev003
+      optional: true
   script:
-    - ./bin/make_dawn_views -t view02_ev003 -d scripts/view2 -s 3
+    - ./bin/make_dawn_views -i ${LOCAL_DATA_PATH}/view_ev003.prim  -t view02_ev003 -d scripts/view2 -s 3
 
 view_02:
   stage: collect
@@ -32,7 +47,6 @@ view_02:
       optional: true
     - job: dawn_view_02:ev003
       optional: true
-    #- ["dawn_view_02:detector", "dawn_view_02:ev001", "dawn_view_02:ev002", "dawn_view_02:ev003"]
   script:
     - ls -lrth *
     - ls -lrth images/*
diff --git a/views/view20.yml b/views/view20.yml
index 75cdb44029f9aeb94b88aae66f948efe45d29a1d..be4107e9273a71a7edffacfbcf82955aa7e4fa4f 100644
--- a/views/view20.yml
+++ b/views/view20.yml
@@ -1,22 +1,31 @@
 dawn_view_20:detector:
   extends: .views
+  needs:
+    - job: view_prim:detector_only
+      optional: false
   script:
     - cp "compact/subsystem_views/calorimeters.xml" "${DETECTOR_PATH}/."
-    - ./bin/make_dawn_views -c ${DETECTOR_PATH}/calorimeters.xml -t calorimeters_view20 -d scripts/view20 -D
+    - ./bin/make_dawn_views -c ${DETECTOR_PATH}/calorimeters.xml -i ${LOCAL_DATA_PATH}/detector_view.prim -t calorimeters_view20 -d scripts/view20 -D
 
 dawn_view_20:ev001:
   extends: .views
+  needs:
+    - job: view_prim:ev001
+      optional: true
   rules:
     - if: '$DETECTOR_EVENT_VIEWS == "ON"'
   script:
-    - ./bin/make_dawn_views -t view20_ev001 -d scripts/view20 -s 1
+    - ./bin/make_dawn_views -i ${LOCAL_DATA_PATH}/view_ev001.prim -t view20_ev001 -d scripts/view20 -s 1
 
 dawn_view_20:ev002:
   extends: .views
+  needs:
+    - job: view_prim:ev002
+      optional: true
   rules:
     - if: '$DETECTOR_EVENT_VIEWS == "ON"'
   script:
-    - ./bin/make_dawn_views -t view20_ev002 -d scripts/view20 -s 2
+    - ./bin/make_dawn_views -i ${LOCAL_DATA_PATH}/view_ev002.prim  -t view20_ev002 -d scripts/view20 -s 2
 
 view_20:
   stage: collect
diff --git a/views/view3.yml b/views/view3.yml
index ea4dd11484086b38c08d825e70f6ba23a8e79a39..6e73b851804a3799854e1f49510092aed9ea2c75 100644
--- a/views/view3.yml
+++ b/views/view3.yml
@@ -1,17 +1,28 @@
 dawn_view_03:detector:
   extends: .views
+  needs:
+    - job: view_prim:detector_only
+      optional: false
   script:
-    - ./bin/make_dawn_views -t view02 -d scripts/view3 -D
+    - ./bin/make_dawn_views -i ${LOCAL_DATA_PATH}/detector_view.prim -t view03 -d scripts/view3 -D
+
 #dawn_view_03:ev001:
 #  extends: .views
+#  needs:
+#    - job: view_prim:ev001
+#      optional: true
 #  script:
-#    - ./bin/make_dawn_views -t view02_ev001 -d scripts/view3 -s 1
+#    - ./bin/make_dawn_views -i ${LOCAL_DATA_PATH}/view_ev001.prim -t view03_ev001 -d scripts/view3 -s 1
+
 dawn_view_03:ev002:
   extends: .views
+  needs:
+    - job: view_prim:ev002
+      optional: true
   rules:
     - if: '$DETECTOR_EVENT_VIEWS == "ON"'
   script:
-    - ./bin/make_dawn_views -t view02_ev002 -d scripts/view3 -s 2
+    - ./bin/make_dawn_views -i ${LOCAL_DATA_PATH}/view_ev002.prim  -t view03_ev002 -d scripts/view3 -s 2
 
 view_03:
   stage: collect
diff --git a/views/view6.yml b/views/view6.yml
index 8d16aa3581c79c44800ddc1ed1fb9bcb958276ca..8d00093965804a0d05add2954428b212238593c7 100644
--- a/views/view6.yml
+++ b/views/view6.yml
@@ -1,31 +1,50 @@
 dawn_view_06:detector:
   extends: .views
+  needs:
+    - job: view_prim:detector_only
+      optional: false
   script:
-    - ./bin/make_dawn_views -t view06 -d scripts/view6 -D
+    - ./bin/make_dawn_views -i ${LOCAL_DATA_PATH}/detector_view.prim -t view06 -d scripts/view6 -D
+
 dawn_view_06:ev001:
   extends: .views
+  needs:
+    - job: view_prim:ev001
+      optional: true
   rules:
     - if: '$DETECTOR_EVENT_VIEWS == "ON"'
   script:
-    - ./bin/make_dawn_views -t view06_ev001 -d scripts/view6 -s 1
+    - ./bin/make_dawn_views -i ${LOCAL_DATA_PATH}/view_ev001.prim -t view06_ev001 -d scripts/view6 -s 1
+
 dawn_view_06:ev002:
   extends: .views
+  needs:
+    - job: view_prim:ev002
+      optional: true
   rules:
     - if: '$DETECTOR_EVENT_VIEWS == "ON"'
   script:
-    - ./bin/make_dawn_views -t view06_ev002 -d scripts/view6 -s 2
+    - ./bin/make_dawn_views -i ${LOCAL_DATA_PATH}/view_ev002.prim  -t view06_ev002 -d scripts/view6 -s 2
+
 dawn_view_06:ev003:
   extends: .views
+  needs:
+    - job: view_prim:ev003
+      optional: true
   rules:
     - if: '$DETECTOR_EVENT_VIEWS == "ON"'
   script:
-    - ./bin/make_dawn_views -t view06_ev003 -d scripts/view6 -s 3
+    - ./bin/make_dawn_views -i ${LOCAL_DATA_PATH}/view_ev003.prim  -t view06_ev003 -d scripts/view6 -s 3
+
 dawn_view_06:ev004:
   extends: .views
+  needs:
+    - job: view_prim:ev004
+      optional: true
   rules:
     - if: '$DETECTOR_EVENT_VIEWS == "ON"'
   script:
-    - ./bin/make_dawn_views -t view06_ev004 -d scripts/view6 -s 4
+    - ./bin/make_dawn_views -i ${LOCAL_DATA_PATH} -t view06_ev004 -d scripts/view6 -s 4
 
 view_06:
   stage: collect
diff --git a/views/view7.yml b/views/view7.yml
index 740ef72d2b2cb11b504d11d892f0a6ce986bd844..55aec2f3054d391efa1c37b2e05c12c17b205de3 100644
--- a/views/view7.yml
+++ b/views/view7.yml
@@ -1,19 +1,30 @@
 dawn_view_07:detector:
   extends: .views
+  needs:
+    - job: view_prim:detector_only
+      optional: false
   script:
-    - ./bin/make_dawn_views -t view07 -d scripts/view7 -D
+    - ./bin/make_dawn_views -i ${LOCAL_DATA_PATH}/detector_view.prim -t view07 -d scripts/view7 -D
+
 dawn_view_07:ev002:
   extends: .views
+  needs:
+    - job: view_prim:ev002
+      optional: true
   rules:
     - if: '$DETECTOR_EVENT_VIEWS == "ON"'
   script:
-    - ./bin/make_dawn_views -t view07_ev002 -d scripts/view7 -s 2
+    - ./bin/make_dawn_views -i ${LOCAL_DATA_PATH}/view_ev001.prim -t view07_ev002 -d scripts/view7 -s 2
+
 dawn_view_07:ev003:
   extends: .views
+  needs:
+    - job: view_prim:ev003
+      optional: true
   rules:
     - if: '$DETECTOR_EVENT_VIEWS == "ON"'
   script:
-    - ./bin/make_dawn_views -t view07_ev003 -d scripts/view7 -s 3
+    - ./bin/make_dawn_views -i ${LOCAL_DATA_PATH}/view_ev002.prim  -t view07_ev003 -d scripts/view7 -s 3
 
 view_07:
   stage: collect