Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions geometry_source/recoil_tof/GeoArgParse.groovy
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@

class GeoArgParse {
static String defaultVariation="default";
static int defaultRunNumber=11;
static String getVariation(String[] args) {
for (int ii=0; ii<args.length-1; ii++) {
if (args[ii].equals("--variation")) return args[ii+1];
}
throw new RuntimeException("GeoArgParse: '--variation variationName' is required.");
}
static int getRunNumber(String[] args) {
for (int ii=0; ii<args.length-1; ii++) {
if (args[ii].equals("--runnumber")) return Integer.parseInt(args[ii+1]);
}
throw new RuntimeException("GeoArgParse: '--runnumber runNumber' is required.");
}
}

36 changes: 36 additions & 0 deletions geometry_source/recoil_tof/bank.pl
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
use strict;
use warnings;

our %configuration;

# Variable Type is two chars.
# The first char:
# R for raw integrated variables
# D for dgt integrated variables
# S for raw step by step variables
# M for digitized multi-hit variables
# V for voltage(time) variables
#
# The second char:
# i for integers
# d for doubles

sub define_bank
{
my $bankname = shift;
my $bankId = shift;

insert_bank_variable(\%configuration, $bankname, "bankid", $bankId, "Di", "$bankname bank ID");
insert_bank_variable(\%configuration, $bankname, "sector", 1, "Di", "recoil tof sector");
insert_bank_variable(\%configuration, $bankname, "row", 2, "Di", "recoil tof row");
insert_bank_variable(\%configuration, $bankname, "column", 3, "Di", "recoil tof column");
insert_bank_variable(\%configuration, $bankname, "TDC_order", 4, "Di", "order 0/1 for up/downstream");
insert_bank_variable(\%configuration, $bankname, "TDC_TDC", 5, "Di", "TDC");
insert_bank_variable(\%configuration, $bankname, "TDC_ToT" , 6, "Di", "ToT");
insert_bank_variable(\%configuration, $bankname, "hitn", 99, "Di", "hit number");
}

sub define_banks {
define_bank("recoil_tof", 22700);
}

23 changes: 23 additions & 0 deletions geometry_source/recoil_tof/config.dat
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Configuration file for recoil TOF

# Detector name and variation
detector_name: recoil_tof
variation: default

# Factory can be MYQL or TEXT
factory: TEXT

# run ranges and variation will apply to geometry, materials and parameters
rmin: 1
rmax: 10000

# MYSQL server and databse if MYSQL factory is selected
dbhost: clasdb.jlab.org

# Comments/Description
comment: This is the first implementation of the recoil tof

# Verbosity controls the perl script output
verbosity: 0


24 changes: 24 additions & 0 deletions geometry_source/recoil_tof/factory.groovy
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
//============================================================
// This script prints volumes for RECOIL TOF detector
//============================================================
import org.jlab.geom.base.*;
import org.jlab.clasrec.utils.*;
import org.jlab.detector.geant4.v2.recoil_tof.*;
import org.jlab.detector.base.*;

import GeoArgParse
def variation = GeoArgParse.getVariation(args);
def runNumber = GeoArgParse.getRunNumber(args);


ConstantProvider cp = GeometryFactory.getConstants(DetectorType.FTOF,runNumber,"default");
//cp.show();

RecoilTOFGeant4Factory factory = new RecoilTOFGeant4Factory(cp);

def outFile = new File("recoil_tof__volumes_"+variation+".txt");

outFile.newWriter().withWriter { w ->
w<<factory;
}

88 changes: 88 additions & 0 deletions geometry_source/recoil_tof/geometry_java.pl
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
package coatjava;

use strict;
use warnings;

use geometry;
my $mothers;
my $positions;
my $rotations;
my $types;
my $dimensions;
my $ids;

sub make_sector
{
my $nSectors = 2;
my $nRows = 5;
my $nCols = 63;


for(my $s=1; $s<=$nSectors; $s++)
{
my %detector = init_det();
my $vname = "recoil_tof_sector$s";

$detector{"name"} = $vname;
$detector{"mother"} = $mothers->{$vname};
$detector{"description"} = "CLAS12 recoil TOF, Sector $s";
$detector{"pos"} = $positions->{$vname};
$detector{"rotation"} = $rotations->{$vname};
$detector{"type"} = $types->{$vname};
$detector{"dimensions"} = $dimensions->{$vname};
$detector{"color"} = "aa0000";
$detector{"material"} = "G4_Galactic";
$detector{"style"} = 0;
$detector{"visible"} = 0;
print_det(\%main::configuration, \%detector);

for(my $row=1; $row<=$nRows; $row++) {
for(my $col=1; $col<=$nCols; $col++) {
make_bar($s, $row, $col);
}
}
}

}

sub make_bar
{
my $iSector = $_[0];
my $iRow = $_[1];
my $iCol =$_[2];

my %detector = init_det();

my $vname = "bar_sector${iSector}_row${iRow}_column${iCol}";

$detector{"name"} = $vname;
$detector{"mother"} = $mothers->{$vname};
$detector{"description"} = "Sector $iSector, Bar, row $iRow, column $iCol";
$detector{"pos"} = $positions->{$vname};
$detector{"rotation"} = $rotations->{$vname};
$detector{"type"} = $types->{$vname};
$detector{"dimensions"} = $dimensions->{$vname};
$detector{"color"} = "aa0000";
$detector{"material"} = "scintillator";
$detector{"style"} = 0;
$detector{"visible"} = 1;
$detector{"sensitivity"} = "recoil_tof";
$detector{"hit_type"} = "recoil_tof";
# set the identifiers
$detector{"identifiers"} = "sector manual $iSector row manual $iRow column manual $iCol order manual 0";
print_det(\%main::configuration, \%detector);

}


sub makeRECOILTOF
{

($mothers, $positions, $rotations, $types, $dimensions, $ids) = @main::volumes;

make_sector();


}

1;
23 changes: 23 additions & 0 deletions geometry_source/recoil_tof/hit.pl
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
use strict;
use warnings;

our %configuration;

sub define_hit
{
# uploading the hit definition
my %hit = init_hit();
$hit{"name"} = "recoil_tof";
$hit{"description"} = "recoil tof hit definitions ";
$hit{"identifiers"} = "sector row column";
$hit{"signalThreshold"} = "0.5*MeV";
$hit{"timeWindow"} = "400*ns";
$hit{"prodThreshold"} = "1*mm";
$hit{"maxStep"} = "1*cm";
$hit{"delay"} = "50*ns";
$hit{"riseTime"} = "0.7*ns";
$hit{"fallTime"} = "1.8*ns";
$hit{"mvToMeV"} = 100;
$hit{"pedestal"} = -20;
print_hit(\%configuration, \%hit);
}
21 changes: 21 additions & 0 deletions geometry_source/recoil_tof/materials.pl
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
use strict;
use warnings;

our %configuration;


sub materials
{
# uploading the mat definition

# Scintillator
my %mat = init_mat();
$mat{"name"} = "scintillator";
$mat{"description"} = "recoil tof scintillator material";
$mat{"density"} = "1.032";
$mat{"ncomponents"} = "2";
$mat{"components"} = "C 9 H 10";
print_mat(\%configuration, \%mat);

}

29 changes: 29 additions & 0 deletions geometry_source/recoil_tof/recoil_tof.gcard
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<gcard>

<option name="geometry" value="1400x1200"/>


<detector name="recoil_tof" factory="TEXT" variation="default"/>


<option name="BEAM_P" value="e-, 5.0*GeV, 50*deg, 0*deg"/>
<option name="SPREAD_P" value="1.0*GeV, 5*deg, 0*deg"/>
<option name="INTEGRATEDRAW" value="dc"/>

<!-- you can scale the fields here. Remember torus -1 means e- INBENDING -->
<option name="SCALE_FIELD" value="binary_torus, -1"/>
<option name="SCALE_FIELD" value="binary_solenoid, -1"/>

<!-- hall field -->
<option name="HALL_FIELD" value="Symm_solenoid_r601_phi1_z1201_13June2018:Symm_torus_r2501_phi16_z251_24Apr2018"/>

<option name="SAVE_ALL_MOTHERS" value="1"/>



<option name="OUTPUT" value="hipo, out.hipo"/>
<option name="PHYSICS" value="STD + FTFP_BERT"/>
<option name="RUNNO" value="11" />
<option name="DIGITIZATION_VARIATION" value="rga_fall2018_mc" />

</gcard>
91 changes: 91 additions & 0 deletions geometry_source/recoil_tof/recoil_tof.pl
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
#!/usr/bin/perl -w

use strict;
use lib ("$ENV{GEMC}/api/perl");
use utils;
use parameters;
use geometry;
use hit;
use bank;
use math;
use materials;

use Math::Trig;

# Help Message
sub help()
{
print "\n Usage: \n";
print " recoil_tof.pl <configuration filename>\n";
print " Will create the CLAS12 recoil tof geometry, materials, bank and hit definitions\n";
exit;
}

# Make sure the argument list is correct
if( scalar @ARGV != 1)
{
help();
exit;
}

# Loading configuration file and paramters
our %configuration = load_configuration($ARGV[0]);
#$configuration{"variation"} = "default" ;

# Global pars - these should be read by the load_parameters from file or DB


# materials
require "./materials.pl";

# banks definitions
require "./bank.pl";

# hits definitions
require "./hit.pl";

#system("which run-groovy");

# sensitive geometry
require "./geometry_java.pl";


# all the scripts must be run for every configuration
# Right now run both configurations, later on just ccdb
#my @allConfs = ("ccdb", "cosmicR1", "ddvcs", "java");
#my @allConfs = ("default");

my @allConfs = ("default");

# bank definitions common to all variations
define_banks();

#foreach my $conf ( @allConfs ){
for(my $ii=0; $ii<=$#allConfs; $ii++){
# $configuration{"variation"} = $conf ;
$configuration{"variation"} = $allConfs[$ii];
print "$configuration{variation}\n";

system("/w/hallb-scshelf2102/clas12/users/nwickjlb/coatjava_edit/coatjava/coatjava/bin/run-groovy factory.groovy --variation $configuration{variation} --runnumber 11");
#system("groovy -cp '../*:..' factory.groovy --variation $configuration{variation} --runnumber 11");

# %configuration = $configuration{"variation"};

# materials
materials();

# hits
define_hit();


# sensitive geometry
# Global pars - these should be read by the load_parameters from file or DB
our @volumes = get_volumes(%configuration);


print "variation default\n";
print "configuration{$configuration{variation})\n";
coatjava::makeRECOILTOF();

}

7 changes: 4 additions & 3 deletions source/SConstruct
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ env.Library(source = field_sources, target = "lib/gfields")


# Hit Processes
env.Append(CPPPATH = ['hitprocess', 'hitprocess/clas12', 'hitprocess/clas12/svt', 'hitprocess/clas12/micromegas', 'hitprocess/clas12/alert', 'hitprocess/clas12/recoil'])
env.Append(CPPPATH = ['hitprocess', 'hitprocess/clas12', 'hitprocess/clas12/svt', 'hitprocess/clas12/micromegas', 'hitprocess/clas12/alert', 'hitprocess/clas12/recoil', 'hitprocess/clas12/recoil_tof'])
env.Append(CPPPATH = ['hitprocess/Aprime', 'hitprocess/GlueX', 'hitprocess/solid'])
hitp_sources = Split("""
hitprocess/HitProcess_MapRegister.cc
Expand Down Expand Up @@ -142,8 +142,9 @@ hitp_sources = Split("""
hitprocess/clas12/band_hitprocess.cc
hitprocess/clas12/uRwell/uRwell_hitprocess.cc
hitprocess/clas12/uRwell/uRwell_strip.cc
hitprocess/clas12/recoil/recoil_hitprocess.cc
hitprocess/clas12/recoil/recoil_strip.cc
hitprocess/clas12/recoil/recoil_hitprocess.cc
hitprocess/clas12/recoil/recoil_strip.cc
hitprocess/clas12/recoil_tof/recoil_tof_hitprocess.cc
hitprocess/bdx/cormo_hitprocess.cc
hitprocess/bdx/veto_hitprocess.cc
hitprocess/bdx/crs_hitprocess.cc
Expand Down
2 changes: 2 additions & 0 deletions source/hitprocess/HitProcess_MapRegister.cc
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
#include "clas12/rtpc_hitprocess.h" ///< Radial Time Projection Chamber (RTPC)
#include "clas12/uRwell/uRwell_hitprocess.h" ///< uRwell detector
#include "clas12/recoil/recoil_hitprocess.h" ///< RGH recoil detector
#include "clas12/recoil_tof/recoil_tof_hitprocess.h" ///< RGH recoil TOF detector

// Beam Dump eXperiment
#include "bdx/cormo_hitprocess.h" ///< Cormorino detector
Expand Down Expand Up @@ -93,6 +94,7 @@ map<string, HitProcess_Factory> HitProcess_Map(string experiments)
hitMap["rtpc"] = &rtpc_HitProcess::createHitClass;
hitMap["urwell"] = &uRwell_HitProcess::createHitClass;
hitMap["recoil"] = &recoil_HitProcess::createHitClass;
hitMap["recoil_tof"] = &recoil_tof_HitProcess::createHitClass;
} else if(EXP == "HPS") {
// Aprime
hitMap["SVT"] = &SVT_HitProcess::createHitClass;
Expand Down
Loading