Message: Readout Cell position Not Logged In (login)
 Next-in-Thread Next-in-Thread
 Next-in-Forum Next-in-Forum

Question Readout Cell position 

Forum: Geometry
Date: 18 Dec, 2009
From: Rohin <Rohin>

Hallo

I have a silicon tracker which consists of 4 concentric cylindrical layers which is achieved through parameterisation along the radial direction. I also have a ReadOut geometry to readout the pixel position of the hits, in these trackers.

The Readout Geometry is employed by parametrisation in R (using the same parametrisation used in Detector Construction), then Replication in phi, followed by replication in Z.

//////////////////////////////////Code//////////////////////////////////
	//Tracker R division
	G4VSolid * Tracker1ROtub    = new G4Tubs("TrackerROtub",
    					detector->GetTrackerTubsRmin(),
					detector->GetTrackerTubsRmax(),
		 			detector->GetTrackerLen(),
		 			0.*deg,
		 			360.*deg);
  	G4LogicalVolume * Tracker1ROlog = new G4LogicalVolume(Tracker1ROtub,dummyMat,"Tracker1ROlogical",0,0,0);
	G4VPVParameterisation *trackerROparam = new StopperTrackerParam;
	//dummy values modified by parameterisation
	G4VPhysicalVolume *trackerRphys = new G4PVParameterised("trackerLayer",Tracker1ROlog,ROAssemblyLog,kXAxis,detector->GetnLayer(),trackerROparam);

	//Tracker---phi division
	G4int tracker1phiSeg = (twopi*detector->GetTrackerTubsRmin()/(50*um));
	G4double tracker1_dphi = 360*deg/tracker1phiSeg;
	G4VSolid *tracker1PhiDiv = new G4Tubs("tracker1phi",
					detector->GetTrackerTubsRmin(),
					detector->GetTrackerTubsRmax(),
					detector->GetTrackerLen(),
					0.0*deg,
					tracker1_dphi);
	G4LogicalVolume *tracker1PhiLog = new G4LogicalVolume(tracker1PhiDiv,dummyMat,"tracker1PhiLog",0,0,0);
	G4VPhysicalVolume * tracker1ROphi = new G4PVReplica("tracker1ROphi",
							    tracker1PhiLog,
							    trackerRphys,
							    kPhi,
							    tracker1phiSeg,
							    50*um);
	//Tracker---Zdivision
	G4int tracker1Zseg = detector->GetTrackerLen()/(50*um);
	G4VSolid *tracker1Zdiv = new G4Tubs("tracker1Z",
					    detector->GetTrackerTubsRmin(),
					    detector->GetTrackerTubsRmax(),
					    50*um,
					    0.0*deg,
					    tracker1_dphi);
	G4LogicalVolume *tracker1ZLog = new G4LogicalVolume(tracker1Zdiv,dummyMat,"tracker1Zlog",0,0,0);
	new G4PVReplica("tracker1Z",
			tracker1ZLog,
			tracker1ROphi,
			kZAxis,
			tracker1Zseg,
			2.*50*um);

	StopperDummySD *SD = new StopperDummySD;
	tracker1ZLog->SetSensitiveDetector(SD);
/////////////////////////////////////////////////////////////////////////

I have two questions here.

1) My goal is to have readout cells of 50um in all the tracker layers. The lowermost volume in the Geometry tree (the Z replica volume) of the Readout Geometry is a pixel of 50um dimensions. Does parametrisation guarantee that all the tracker layers have a pixel structure with 50um dimensions ?

2)In the ProcessHits method of sensitive detector, I acces the copy number of the pixel which receive hit. But I also want the global position of the cell which received the hit. I tried 
               ROhist->GetTranslation();
But this gives me only the translation in Z. 

When I 'Move Up the History' and again request for a translation, all I am getting is a (0,0,0).

Is there anything that I am doing wrong or is it just that, this is not the way to get the position of the Readout cell?

 Add Message Add Message
to: "Readout Cell position"

 Subscribe Subscribe

This site runs SLAC HyperNews version 1.11-slac-98, derived from the original HyperNews


[ Geant 4 Home | Geant 4 HyperNews | Search | Request New Forum | Feedback ]