diff --git a/examples/output.def b/examples/output.def index 2f940ea175a8abae2a93e9cda7ca841a305704ec..4de41329540a8ecd7b1912c6afcc882c3070c2a3 100644 --- a/examples/output.def +++ b/examples/output.def @@ -26,26 +26,26 @@ TH1F hposadc4 'HMS s2y+ ADC hits' H.hod.2y.posadchits 10 0.5 10.5 TH1F hnegadc4 'HMS s2y- ADC hits' H.hod.2y.negadchits 10 0.5 10.5 # ADC hits per Calorimeter layer -TH1F chposadc1 'HMS Cal A+ ADC hits' H.Cal.1z.posadchits 13 0.5 13.5 -TH1F chnegadc1 'HMS Cal A- ADC hits' H.Cal.1z.negadchits 13 0.5 13.5 -TH1F chposadc2 'HMS Cal B+ ADC hits' H.Cal.2z.posadchits 13 0.5 13.5 -TH1F chnegadc2 'HMS Cal B- ADC hits' H.Cal.2z.negadchits 13 0.5 13.5 -TH1F chposadc3 'HMS Cal C+ ADC hits' H.Cal.3z.posadchits 13 0.5 13.5 -TH1F chposadc4 'HMS Cal D+ ADC hits' H.Cal.4z.posadchits 13 0.5 13.5 +TH1F chposadc1 'HMS Cal A+ ADC hits' H.Cal.1pr.posadchits 13 0.5 13.5 +TH1F chnegadc1 'HMS Cal A- ADC hits' H.Cal.1pr.negadchits 13 0.5 13.5 +TH1F chposadc2 'HMS Cal B+ ADC hits' H.Cal.2ta.posadchits 13 0.5 13.5 +TH1F chnegadc2 'HMS Cal B- ADC hits' H.Cal.2ta.negadchits 13 0.5 13.5 +TH1F chposadc3 'HMS Cal C+ ADC hits' H.Cal.3ta.posadchits 13 0.5 13.5 +TH1F chposadc4 'HMS Cal D+ ADC hits' H.Cal.4ta.posadchits 13 0.5 13.5 -TH1F calposadc1 'HMS Cal ADC1' H.Cal.1z.posadc1 150 -50 400 -# TH1F calposadc2 'HMS Cal ADC2' H.Cal.2z.posadc1 150 -50 400 -# TH1F chposadc 'HMS Cal ADC3' H.Cal.1z.posadc3 150 -50 400 -# TH1F chposadc 'HMS Cal ADC4' H.Cal.1z.posadc4 150 -50 400 -# TH1F chposadc 'HMS Cal ADC5' H.Cal.1z.posadc5 150 -50 400 -# TH1F chposadc 'HMS Cal ADC6' H.Cal.1z.posadc6 150 -50 400 -# TH1F chposadc 'HMS Cal ADC7' H.Cal.1z.posadc7 150 -50 400 -# TH1F chposadc 'HMS Cal ADC8' H.Cal.1z.posadc8 150 -50 400 -# TH1F chposadc 'HMS Cal ADC9' H.Cal.1z.posadc9 150 -50 400 -# TH1F chposadc 'HMS Cal ADC10' H.Cal.1z.posadc10 150 -50 400 -# TH1F chposadc 'HMS Cal ADC11' H.Cal.1z.posadc11 150 -50 400 -# TH1F chposadc 'HMS Cal ADC12' H.Cal.1z.posadc12 150 -50 400 -# TH1F chposadc 'HMS Cal ADC13' H.Cal.1z.posadc13 150 -50 400 +TH1F calposadc1 'HMS Cal ADC1' H.Cal.1pr.posadc1 150 -50 400 +# TH1F calposadc2 'HMS Cal ADC2' H.Cal.2ta.posadc1 150 -50 400 +# TH1F chposadc 'HMS Cal ADC3' H.Cal.1pr.posadc3 150 -50 400 +# TH1F chposadc 'HMS Cal ADC4' H.Cal.1pr.posadc4 150 -50 400 +# TH1F chposadc 'HMS Cal ADC5' H.Cal.1pr.posadc5 150 -50 400 +# TH1F chposadc 'HMS Cal ADC6' H.Cal.1pr.posadc6 150 -50 400 +# TH1F chposadc 'HMS Cal ADC7' H.Cal.1pr.posadc7 150 -50 400 +# TH1F chposadc 'HMS Cal ADC8' H.Cal.1pr.posadc8 150 -50 400 +# TH1F chposadc 'HMS Cal ADC9' H.Cal.1pr.posadc9 150 -50 400 +# TH1F chposadc 'HMS Cal ADC10' H.Cal.1pr.posadc10 150 -50 400 +# TH1F chposadc 'HMS Cal ADC11' H.Cal.1pr.posadc11 150 -50 400 +# TH1F chposadc 'HMS Cal ADC12' H.Cal.1pr.posadc12 150 -50 400 +# TH1F chposadc 'HMS Cal ADC13' H.Cal.1pr.posadc13 150 -50 400 #TH1F hdcrawtdc #TH1F hdccuttdc diff --git a/src/THcShower.cxx b/src/THcShower.cxx index 96d94db6e2bf73575ecc6a19a1fb135b2620d94b..6de0e8526ad36cdf2edf585857c2291cde326331 100644 --- a/src/THcShower.cxx +++ b/src/THcShower.cxx @@ -37,7 +37,6 @@ THcShower::THcShower( const char* name, const char* description, THaNonTrackingDetector(name,description,apparatus) { // Constructor - Setup(name, description); // fTrackProj = new TClonesArray( "THaTrackProj", 5 ); } @@ -60,11 +59,12 @@ void THcShower::Setup(const char* name, const char* description) fNLayers = 4; // Eventually get # layers and layer names from a DB fLayerNames = new char* [fNLayers]; - for(Int_t i=0;i<fNLayers;i++) {fLayerNames[i] = new char[3];} - strcpy(fLayerNames[0],"1z"); - strcpy(fLayerNames[1],"2z"); - strcpy(fLayerNames[2],"3z"); - strcpy(fLayerNames[3],"4z"); + for(Int_t i=0;i<fNLayers;i++) {fLayerNames[i] = new char[4];} + // Use layer names to help construct parameter names + strcpy(fLayerNames[0],"1pr"); + strcpy(fLayerNames[1],"2ta"); + strcpy(fLayerNames[2],"3ta"); + strcpy(fLayerNames[3],"4ta"); size_t nlen = strlen(name); size_t slen = 0; @@ -92,10 +92,7 @@ THaAnalysisObject::EStatus THcShower::Init( const TDatime& date ) static const char* const here = "Init()"; cout << "THcShower::Init " << GetName() << endl; - - if( THaNonTrackingDetector::Init( date ) ) - return fStatus; - + Setup(GetName(), GetTitle()); // Should probably put this in ReadDatabase as we will know the // maximum number of hits after setting up the detector map @@ -131,6 +128,7 @@ Int_t THcShower::ReadDatabase( const TDatime& date ) // 'date' contains the date/time of the run being analyzed. // static const char* const here = "ReadDatabase()"; + char prefix[2]; // Read data from database // Pull values from the THcParmList instead of reading a database @@ -142,89 +140,47 @@ Int_t THcShower::ReadDatabase( const TDatime& date ) // Will need to determine which spectrometer in order to construct // the parameter names (e.g. hscin_1x_nr vs. sscin_1x_nr) -cout << "THcShower::ReadDatabase called " << GetName() << endl; + cout << "THcShower::ReadDatabase called " << GetName() << endl; - fNLayers = 4; // Hardwire for now + prefix[0]=tolower(GetApparatus()->GetName()[0]); + prefix[1]='\0'; BlockThick = new Double_t [fNLayers]; - - BlockThick[0] = *(Double_t *)gHcParms->Find("hcal_1pr_thick")->GetValuePointer(); - BlockThick[1] = *(Double_t *)gHcParms->Find("hcal_2ta_thick")->GetValuePointer(); - BlockThick[2] = *(Double_t *)gHcParms->Find("hcal_3ta_thick")->GetValuePointer(); - BlockThick[3] = *(Double_t *)gHcParms->Find("hcal_4ta_thick")->GetValuePointer(); - -cout << "Block thickness: " << BlockThick[2] << endl; - -fNBlocks = new Int_t [fNLayers]; - - fNBlocks[0] = *(Int_t *)gHcParms->Find("hcal_1pr_nr")->GetValuePointer(); - fNBlocks[1] = *(Int_t *)gHcParms->Find("hcal_2ta_nr")->GetValuePointer(); - fNBlocks[2] = *(Int_t *)gHcParms->Find("hcal_3ta_nr")->GetValuePointer(); - fNBlocks[3] = *(Int_t *)gHcParms->Find("hcal_4ta_nr")->GetValuePointer(); - - cout << "Number of blocks per layer: " << fNBlocks[2] << endl; - + fNBlocks = new Int_t [fNLayers]; fNLayerZPos = new Double_t [fNLayers]; - - fNLayerZPos[0] = *(Double_t *)gHcParms->Find("hcal_1pr_zpos")->GetValuePointer(); - fNLayerZPos[1] = *(Double_t *)gHcParms->Find("hcal_2ta_zpos")->GetValuePointer(); - fNLayerZPos[2] = *(Double_t *)gHcParms->Find("hcal_3ta_zpos")->GetValuePointer(); - fNLayerZPos[3] = *(Double_t *)gHcParms->Find("hcal_4ta_zpos")->GetValuePointer(); - -cout << "Z Position: " << fNLayerZPos[2] << endl; - XPos = new Double_t [2*fNLayers]; - XPos[0] = *(Double_t *)gHcParms->Find("hcal_1pr_left")->GetValuePointer(); - XPos[1] = *(Double_t *)gHcParms->Find("hcal_1pr_right")->GetValuePointer(); - XPos[2] = *(Double_t *)gHcParms->Find("hcal_2ta_left")->GetValuePointer(); - XPos[3] = *(Double_t *)gHcParms->Find("hcal_2ta_right")->GetValuePointer(); - XPos[4] = *(Double_t *)gHcParms->Find("hcal_3ta_left")->GetValuePointer(); - XPos[5] = *(Double_t *)gHcParms->Find("hcal_3ta_right")->GetValuePointer(); - XPos[6] = *(Double_t *)gHcParms->Find("hcal_4ta_left")->GetValuePointer(); - XPos[7] = *(Double_t *)gHcParms->Find("hcal_4ta_right")->GetValuePointer(); - -cout << "X Positions: " << XPos[0] << ", " << XPos[1] << endl; - - YPos = new Double_t* [4]; - cout << "Y Positions:"; - - Double_t* p; - Int_t ilayer; - - ilayer = 0; - p = (Double_t *)gHcParms->Find("hcal_1pr_top")->GetValuePointer(); - YPos[ilayer] = new Double_t [fNBlocks[ilayer]]; - // Print out some parameters just to demonstrate that it works - - for(Int_t i=0;i<fNBlocks[ilayer];i++) { - YPos[ilayer][i] = p[i]; - cout << " " << YPos[ilayer][i]; - } - cout << endl; - - ilayer = 1; - p = (Double_t *)gHcParms->Find("hcal_2ta_top")->GetValuePointer(); - YPos[ilayer] = new Double_t [fNBlocks[ilayer]]; - - for(Int_t i=0;i<fNBlocks[ilayer];i++) { - YPos[ilayer][i] = p[i]; + for(Int_t i=0;i<fNLayers;i++) { + DBRequest list[]={ + {Form("cal_%s_thick",fLayerNames[i]), &BlockThick[i], kDouble}, + {Form("cal_%s_nr",fLayerNames[i]), &fNBlocks[i], kInt}, + {Form("cal_%s_zpos",fLayerNames[i]), &fNLayerZPos[i], kDouble}, + {Form("cal_%s_left",fLayerNames[i]), &XPos[2*i], kDouble}, + {Form("cal_%s_right",fLayerNames[i]), &XPos[2*i+1], kDouble}, + {0} + }; + gHcParms->LoadParmValues((DBRequest*)&list, prefix); } - - ilayer = 2; - p = (Double_t *)gHcParms->Find("hcal_3ta_top")->GetValuePointer(); - YPos[ilayer] = new Double_t [fNBlocks[ilayer]]; - - for(Int_t i=0;i<fNBlocks[ilayer];i++) { - YPos[ilayer][i] = p[i]; + YPos = new Double_t* [fNLayers]; + for(Int_t i=0;i<fNLayers;i++) { + YPos[i] = new Double_t [fNBlocks[i]]; + DBRequest list[]={ + {Form("cal_%s_top",fLayerNames[i]),YPos[i], kDouble, fNBlocks[i]}, + {0} + }; + gHcParms->LoadParmValues((DBRequest*)&list, prefix); } - - ilayer = 3; - p = (Double_t *)gHcParms->Find("hcal_4ta_top")->GetValuePointer(); - YPos[ilayer] = new Double_t [fNBlocks[ilayer]]; - - for(Int_t i=0;i<fNBlocks[ilayer];i++) { - YPos[ilayer][i] = p[i]; + for(Int_t i=0;i<fNLayers;i++) { + cout << "Plane " << fLayerNames[i] << ":" << endl; + cout << " Block thickness: " << BlockThick[i] << endl; + cout << " NBlocks : " << fNBlocks[i] << endl; + cout << " Z Position : " << fNLayerZPos[i] << endl; + cout << " X Positions : " << XPos[2*i] << ", " << XPos[2*i+1] << endl; + cout << " Y Positions :"; + for(Int_t j=0; j<fNBlocks[i]; j++) { + cout << " " << YPos[i][j]; + } + cout << endl; } fIsInit = true;