void KVFAZIALNS2016::BuildFAZIA() { //Build geometry of FAZIASYM //All telescopes are : Si(300µm)-Si(500µm)-CsI(10cm) //No attempt has been made to implement real thicknesses // Info("BuildFAZIA", "Compact geometry, %f cm from target", fFDist); TGeoVolume* top = gGeoManager->GetTopVolume(); Double_t distance_block_cible = fFDist * KVUnits::cm; Double_t thick_si1 = 300 * KVUnits::um; TGeoTranslation trans; trans.SetDz(distance_block_cible + thick_si1 / 2.); KVFAZIABlock* block = new KVFAZIABlock; TGeoRotation rot1, rot2; TGeoHMatrix h; TGeoHMatrix* ph = 0; Double_t theta = 0; Double_t phi = 0; Double_t theta_min = fFThetaMin;//smallest lab polar angle in degrees Double_t centre_hole = 2.*tan(theta_min * TMath::DegToRad()) * distance_block_cible; Double_t dx = (block->GetTotalSideWithBlindage()) / 2.; TVector3 centre; for (Int_t bb = 0; bb < fNblocks; bb += 1) { if (bb == 1) centre.SetXYZ(-1 * (dx - centre_hole / 2), -dx - centre_hole / 2, distance_block_cible); else if (bb == 2) centre.SetXYZ(-1 * (dx + centre_hole / 2), dx - centre_hole / 2, distance_block_cible); else if (bb == 3) centre.SetXYZ(-1 * (-dx + centre_hole / 2), dx + centre_hole / 2, distance_block_cible); else if (bb == 0) centre.SetXYZ(-1 * (-dx - centre_hole / 2), -dx + centre_hole / 2, distance_block_cible); else if (bb == 4) centre.SetXYZ(-1 * (-dx - centre_hole / 2), -3 * dx + centre_hole / 2, distance_block_cible); //centre.SetXYZ(-1 * (dx - centre_hole / 2), -3 * dx - centre_hole / 2, distance_block_cible); else { Warning("BuildFAZIA", "Block position definition is done only for %d blocks", fNblocks); } theta = centre.Theta() * TMath::RadToDeg(); phi = centre.Phi() * TMath::RadToDeg(); printf("BLK #%d => theta=%1.2lf - phi=%1.2lf\n", bb, theta, phi); rot2.SetAngles(phi + 90., theta, 0.); rot1.SetAngles(-1.*phi, 0., 0.); h = rot2 * trans * rot1; ph = new TGeoHMatrix(h); top->AddNode(block, bb, ph); } // add telescope for elastic scattering monitoring // RutherfordTelescope(); // Change default geometry import angular range for rutherford telescope SetGeometryImportParameters(.25, 1., 1.84); }
KVFAZIA::KVFAZIA() { // Default constructor SetName("FAZIA"); SetTitle(ClassName()); fStartingBlockNumber = 0; gFazia = this; IncludeTargetInGeometry(); fDetectorLabels = ""; fSignalTypes = "QL1,I1,QH1,Q2,I2,Q3"; SetGeometryImportParameters(); }