#####################################################################
# usage :                                                            
#  source fzhd.csh owner fname run events input pileup               
#                                                                    
#  Author : Pal Hidas,  January 18, 2001     hidaspal@fnal.gov       
#                                                                    
#  input : fz_file_name  or "hits"                                   
#                                                                    
#  If owner = "hits_only" then digis are not created, only hits      
#                                                                    
#  SEE THE SCRIPT "run_fzhd.csh" for examples                        
#                                                                    
#####################################################################

if( $1 == "" ) then
  echo '---------------------------------------------------'
  echo 'too few parameters, follow instructions in fzhd.csh'
  echo '---------------------------------------------------'   
  exit 0
endif


setenv owner  $1
setenv fname  $2
setenv run    $3
setenv events $4
setenv input  $5
setenv pileup $6

# copy the whole stuff to working directory

echo $PWD >> $MYWORKDIR/fzhd.out 
cd $OO_ROOT_DIR
echo $PWD >> $MYWORKDIR/fzhd.out 

if ( -f '$MYWORKDIR/$ORCAVERSION' ) then
  echo '*** Using existing ORCA tree in work area ***' >> $MYWORKDIR/fzhd.out
else
  echo '*** Copying ORCA tree to work area ***' >> $MYWORKDIR/fzhd.out
  cp -r $ORCAVERSION $MYWORKDIR
endif


cd $MYWORKDIR/$ORCAVERSION/src/Examples/ExProduction
echo $PWD >> $MYWORKDIR/fzhd.out

###########
# hits
###########

if ( $input != "hits" ) then

  echo ' *** create writeHits.csh ' >> $MYWORKDIR/fzhd.out
  echo '     in ' $PWD >> $MYWORKDIR/fzhd.out

  rm -f writeHits.csh
  cat >  writeHits.csh << EOF 
  setenv CARF_OUTPUT_OWNER SimHits
  setenv CARF_OUTPUT_DATASET_NAME $fname
  setenv DETINPUT $MYCMSIMDATA/cms_geom_out.rz
EOF

  echo '-------------------------------------------' >> $DATEDIR/fzhd.date
  date >> $DATEDIR/fzhd.date
  cat >> $DATEDIR/fzhd.date << EOF
 ***** writeHits starts , run number = $run
EOF

  echo ' *** run writeHits.csh ' >> $MYWORKDIR/fzhd.out

  source writeHits.csh


  #--- repeat this for multiple fz files ( better not ) ------

  echo ' *** create an .orcarc file for writeHits ' >> $MYWORKDIR/fzhd.out
  echo '     in ' $PWD >> $MYWORKDIR/fzhd.out


  rm -f .orcarc 
  cat > .orcarc  << EOF 
  # change it to your cmsim file 
  FZInputFiles=$input.fz
  # set the number of events to process
  SimApplication:MaxEvents=$events
EOF

  echo ' *** run writeHits ' >> $MYWORKDIR/fzhd.out
  ../../../bin/Linux__2.2/writeHits >>& $MYWORKDIR/writeHits.out

  #--- repeat for multiple fz files until here ----

  cp .orcarc orcarc_writeHits


else

  echo ' *** skipping hit production, digis produced from existing hits ' >> $MYWORKDIR/fzhd.out
  echo ' *** skipping hit production, digis produced from existing hits ' >>  $DATEDIR/fzhd.date 

endif


###########
# digis
###########

if ( $owner != "hits_only" ) then

setenv CARF_DATASET_PACKAGES RawEvent:C8ROU:SimEvent:PythiaSimEvent:Reco:Event
echo ' *** WARNING *** CARF_DATASET_PACKAGES is set, do you really want this ?' >> $MYWORKDIR/fzhd.out
echo ' *** it is necessary for ORCA_4_4_0 in fnal' >> $MYWORKDIR/fzhd.out

echo ' *** create a .orcarc file for writeDigis ' >> $MYWORKDIR/fzhd.out
echo '     in ' $PWD >> $MYWORKDIR/fzhd.out

rm -f .orcarc 
touch .orcarc

echo "RecApplication:InputRun= " $run >> .orcarc 
echo "RecApplication:MaxEvents = -1" >> .orcarc

if ( $pileup != "0" ) then

 echo "PUGenerator:Owner = SimHits" >> .orcarc
 echo "PUGenerator:DataSet = jm_minbias" >> .orcarc
 echo "PUGenerator:AverageEvents = " $pileup >> .orcarc
 echo "PUGenerator:MinBunch = -5" >> .orcarc
 echo "PUGenerator:MaxBunch  = 3" >> .orcarc
 echo "PUGenerator:FirstEvent = -2" >> .orcarc

endif

echo "DBPopulator:MaxDBSize=1.0" >> .orcarc
echo "DBPopulator:CommitInterval=50" >> .orcarc
echo "#DBPopulator:UnNamedContainers = 1" >> .orcarc
echo "#DataSet:JobsPerDB = 5" >> .orcarc
echo "#DataSet:DBPoolIncrement = 5" >> .orcarc

echo "CaloRecHit:EcalBarrel = 1" >> .orcarc
echo "CaloRecHit:EcalEndcap = 1" >> .orcarc
echo "CaloRecHit:HcalBarrel = 1" >> .orcarc
echo "CaloRecHit:Preshower = 1" >> .orcarc
echo "Ecal:Barrel:noise = 0.03" >> .orcarc
echo "Ecal:Barrel:threshold = 0.06" >> .orcarc
echo "Ecal:Endcap:noise = 0.15" >> .orcarc
echo "Ecal:Endcap:threshold = 0.30" >> .orcarc
echo "Hcal:noise = 0.0006" >> .orcarc
echo "Hcal:threshold = 0.300" >> .orcarc
echo "Presh:noise = 0.000015" >> .orcarc
echo "Presh:threshold = 0.000054" >> .orcarc
echo "Calo:Preshower:MinBunch=-2" >> .orcarc
echo "Calo:Preshower:MaxBunch=1" >> .orcarc


echo "Muon:Barrel:MinBunch = 0" >> .orcarc
echo "Muon:Barrel:MaxBunch = 0" >> .orcarc

echo "Muon:EndCap:MinBunch = 0" >> .orcarc
echo "Muon:EndCap:MaxBunch = 0" >> .orcarc

echo "Muon:Rpc:MinBunch = 0" >> .orcarc
echo "Muon:Rpc:MaxBunch = 0" >> .orcarc

echo "EcalTrigPrim:Threshold = 0.3" >> .orcarc
echo "HcalTrigPrim:Threshold = 0.3" >> .orcarc

echo "#Verbose:test = 1" >> .orcarc
echo "GoPersistent = 1" >> .orcarc



echo ' *** create writeDigis.csh ' >> $MYWORKDIR/fzhd.out
echo '     in ' $PWD >> $MYWORKDIR/fzhd.out

rm -f writeDigis.csh
cat >  writeDigis.csh << EOF
setenv CARF_INPUT_OWNER SimHits
setenv CARF_INPUT_DATASET_NAME $fname
setenv CARF_OUTPUT_OWNER $owner
setenv CARF_OUTPUT_DATASET_NAME $fname
setenv OO_AMS_ONLY 1
EOF


echo '-------------------------------------------' >> $DATEDIR/fzhd.date
date >> $DATEDIR/fzhd.date
cat >> $DATEDIR/fzhd.date << EOF
 ***** writeDigis starts  , run number = $run
EOF

echo ' *** run writeDigis.csh ' >> $MYWORKDIR/fzhd.out

source writeDigis.csh
# now you can run it 
../../../bin/Linux__2.2/writeDigis >>& $MYWORKDIR/writeDigis.out

mv .orcarc orcarc_writeDigis


# !hits_only end
endif

####################
#### end of job ####
####################

echo '-------------------------------------------' >> $DATEDIR/fzhd.date
date >> $DATEDIR/fzhd.date
cat >> $DATEDIR/fzhd.date << EOF
 * job ends
EOF

cd $MYBEGIN
echo ' *** run ended ' >> $MYWORKDIR/fzhd.out

exit 0



