Go to the documentation of this file. 5 if [
"$TreeName" =
"" ]
8 echo
" +------------------------------------------------------------+" 9 echo
" | First argument is the file <TreeName>. |" 10 echo
" | This can be with or without the extension (it's stripped). |" 11 echo
" | This script then looks for <TreeName>.txt to make a class. |" 12 echo
" +------------------------------------------------------------+" 17 TreeName=${TreeName%%.*}
19 def=`echo $TreeName | tr
"[a-z]" "[A-Z]"`
21 inVarsFile=$TreeName.txt
25 if [ ! -f $inVarsFile ]
27 echo
"$inVarsFile does not exist." >&2
31 echo
"#ifndef CROMBIE_"$
def"_H" > $h
32 echo
"#define CROMBIE_"$
def"_H" >> $h
35 echo
"#include \"TFile.h\"" >> $h
36 echo
"#include \"TTree.h\"" >> $h
38 declare -a otherTypes=()
39 for branch
in `cat $inVarsFile`
42 varLetter=
"${after%=*}" 43 if [
"$varLetter" !=
"F" -a
"$varLetter" !=
"I" -a
"$varLetter" !=
"i" -a
"$varLetter" !=
"O" -a
"$varLetter" !=
"VF" -a
"$varLetter" !=
"VI" -a
"$varLetter" !=
"VO" -a
"$varLetter" !=
"L" -a
"$varLetter" !=
"l" ]; then
44 if [
"${varLetter:0:1}" !=
"V" ]; then
47 varType=${varLetter:1}
49 otherTypes=(
"${otherTypes[@]}" "$varType")
53 for objType
in `echo
"${otherTypes[@]}" | tr
' ' '\n' | sort -u`
55 echo
"#include \""$objType
".h\"" >> $h
59 echo
"class $TreeName" >> $h
62 echo
" $TreeName( TTree* tree );" >> $h
63 echo
" $TreeName( const char* name );" >> $h
64 echo
" $TreeName( const char* name, TString outFileName );" >> $h
65 echo
" $TreeName( const char* name, TFile* outFile );" >> $h
66 echo
" virtual ~$TreeName();" >> $h
69 for branch
in `cat $inVarsFile`
71 if [
"${branch:0:1}" =
"#" ]
76 varName=
"${branch%/*}" 78 varLetter=
"${after%=*}" 79 varDefault=
"${after##*=}" 80 if [
"$varLetter" =
"F" ]; then
82 elif [
"$varLetter" =
"I" ]; then
84 elif [
"$varLetter" =
"i" ]; then
85 varType=
"unsigned int " 86 elif [
"$varLetter" =
"L" ]; then
88 elif [
"$varLetter" =
"l" ]; then
89 varType=
"unsigned long" 90 elif [
"$varLetter" =
"O" ]; then
92 elif [
"$varLetter" =
"VF" ]; then
93 varType=
"std::vector<float>*" 94 elif [
"$varLetter" =
"VI" ]; then
95 varType=
"std::vector<int>* " 96 elif [
"$varLetter" =
"VO" ]; then
97 varType=
"std::vector<bool>* " 98 elif [
"${varLetter:0:1}" !=
"V" ]; then
99 varType=$varLetter
"* " 101 varType=
"std::vector<"${varLetter:1}
"*>*" 103 echo
" $varType $varName;" >> $h
107 echo
" TTree* ReturnTree() { return t; }" >> $h
108 echo
" TFile* ReturnFile() { return fFile; }" >> $h
109 echo
" void Fill() { t->Fill(); Reset(); }" >> $h
110 echo
" void Reset();" >> $h
111 echo
" void WriteToFile ( TFile *f ) { f->WriteTObject(t, t->GetName()); }" >> $h
112 echo
" void Write() { fFile->WriteTObject(t, t->GetName());" >> $h
113 echo
" fFile->Close(); }" >> $h
114 echo
" void Set ( const char* name, float val );" >> $h
116 echo
" private:" >> $h
117 echo
" TFile* fFile;" >> $h
118 echo
" TTree* t;" >> $h
119 echo
" void SetupTree();" >> $h
123 echo
"//--------------------------------------------------------------------------------------------------" >> $s
124 echo
"$TreeName::$TreeName(TTree* tree) :" >> $s
125 echo
" fFile(0)" >> $s
127 echo
" t = tree;" >> $s
128 echo
" SetupTree();" >> $s
132 echo
"//--------------------------------------------------------------------------------------------------" >> $s
133 echo
"$TreeName::$TreeName(const char* name) :" >> $s
134 echo
" fFile(0)" >> $s
136 echo
" t = new TTree(name,name);" >> $s
137 echo
" SetupTree();" >> $s
141 echo
"//--------------------------------------------------------------------------------------------------" >> $s
142 echo
"$TreeName::$TreeName(const char* name, TString outFileName)" >> $s
144 echo
" fFile = new TFile(outFileName,\"RECREATE\");" >> $s
145 echo
" t = new TTree(name,name);" >> $s
146 echo
" SetupTree();" >> $s
150 echo
"//--------------------------------------------------------------------------------------------------" >> $s
151 echo
"$TreeName::$TreeName(const char* name, TFile* outFile)" >> $s
153 echo
" fFile = outFile;" >> $s
154 echo
" t = new TTree(name,name);" >> $s
155 echo
" SetupTree();" >> $s
159 echo
"//--------------------------------------------------------------------------------------------------" >> $s
160 echo
"$TreeName::~$TreeName()" >> $s
164 echo
"//--------------------------------------------------------------------------------------------------" >> $s
166 echo
"$TreeName::Reset()" >> $s
168 for branch
in `cat $inVarsFile`
170 if [
"${branch:0:1}" =
"#" ]
174 varName=
"${branch%/*}" 175 after=
"${branch##*/}" 176 varLetter=
"${after%=*}" 177 varDefault=
"${after##*=}" 178 echo
" $varName = $varDefault;" >> $s
183 echo
"//--------------------------------------------------------------------------------------------------" >> $s
185 echo
"$TreeName::SetupTree()" >> $s
187 for branch
in `cat $inVarsFile`
189 if [
"${branch:0:1}" =
"#" ]
193 varName=
"${branch%/*}" 194 after=
"${branch##*/}" 195 varLetter=
"${after%=*}" 196 varDefault=
"${after##*=}" 197 if [
"$varLetter" =
"I" -o
"$varLetter" =
"i" -o
"$varLetter" =
"L" -o
"$varLetter" =
"l" -o
"$varLetter" =
"F" -o
"$varLetter" =
"O" ]; then
198 echo
" t->Branch(\"$varName\",&$varName,\"$varName/$varLetter\");" >> $s
200 echo
" t->Branch(\"$varName\",&$varName);" >> $s
204 echo
" Reset();" >> $s
208 echo
"//--------------------------------------------------------------------------------------------------" >> $s
210 echo
"$TreeName::Set(const char* name, float val)" >> $s
212 for branch
in `cat $inVarsFile`
214 if [
"${branch:0:1}" =
"#" ]
218 varName=
"${branch%/*}" 219 after=
"${branch##*/}" 220 varLetter=
"${after%=*}" 221 if [
"$varLetter" =
"F" ]; then
222 echo
" if (strcmp(name, \"$varName\") == 0)" >> $s
223 echo
" $varName = val;" >> $s