clusterRCT[0] = row;
clusterRCT[1] = col;
clusterRCT[2] = 0;
- fTransform->Transform(clusterXYZ,clusterRCT,((UInt_t) time),0);
-
- // Add the cluster to the output array
- // The track indices will be stored later
- Float_t clusterPos[3];
- clusterPos[0] = clusterXYZ[0];
- clusterPos[1] = clusterXYZ[1];
- clusterPos[2] = clusterXYZ[2];
- Float_t clusterSig[2];
- clusterSig[0] = clusterXYZ[4];
- clusterSig[1] = clusterXYZ[5];
- Double_t clusterCharge = clusterXYZ[3];
- Char_t clusterTimeBin = ((Char_t) clusterRCT[2]);
- AliTRDcluster *cluster = new AliTRDcluster(idet
- ,clusterCharge
- ,clusterPos
- ,clusterSig
- ,0x0
- ,((Char_t) nPadCount)
- ,signals
- ,((UChar_t) col)
- ,((UChar_t) row)
- ,((UChar_t) time)
- ,clusterTimeBin
- ,clusterPosCol
- ,volid);
-
- // Temporarily store the row, column and time bin of the center pad
- // Used to later on assign the track indices
- cluster->SetLabel( row,0);
- cluster->SetLabel( col,1);
- cluster->SetLabel(time,2);
-
- RecPoints()->Add(cluster);
-
- // Store the index of the first cluster in the current ROC
- if (firstClusterROC < 0)
- {
- firstClusterROC = RecPoints()->GetEntriesFast() - 1;
- }
- // Count the number of cluster in the current ROC
- nClusterROC++;
+ if (fTransform->Transform(clusterXYZ,clusterRCT,((UInt_t) time),0)) {
+
+ // Add the cluster to the output array
+ // The track indices will be stored later
+ Float_t clusterPos[3];
+ clusterPos[0] = clusterXYZ[0];
+ clusterPos[1] = clusterXYZ[1];
+ clusterPos[2] = clusterXYZ[2];
+ Float_t clusterSig[2];
+ clusterSig[0] = clusterXYZ[4];
+ clusterSig[1] = clusterXYZ[5];
+ Double_t clusterCharge = clusterXYZ[3];
+ Char_t clusterTimeBin = ((Char_t) clusterRCT[2]);
+ AliTRDcluster *cluster = new AliTRDcluster(idet
+ ,clusterCharge
+ ,clusterPos
+ ,clusterSig
+ ,0x0
+ ,((Char_t) nPadCount)
+ ,signals
+ ,((UChar_t) col)
+ ,((UChar_t) row)
+ ,((UChar_t) time)
+ ,clusterTimeBin
+ ,clusterPosCol
+ ,volid);
+
+ // Temporarily store the row, column and time bin of the center pad
+ // Used to later on assign the track indices
+ cluster->SetLabel( row,0);
+ cluster->SetLabel( col,1);
+ cluster->SetLabel(time,2);
+
+ RecPoints()->Add(cluster);
+
+ // Store the index of the first cluster in the current ROC
+ if (firstClusterROC < 0)
+ {
+ firstClusterROC = RecPoints()->GetEntriesFast() - 1;
+ }
+
+ // Count the number of cluster in the current ROC
+ nClusterROC++;
+
+ } // if: Transform ok ?
} // if: Maximum found ?
gMC->Gsposp("UTA2",3,"UTF2",-xpos,ypos,zpos
,matrix[1],"ONLY",parPlt,kNparPlt);
+ // Additional aluminum bar
+ parBOX[0] = 80.0/2.0;
+ parBOX[1] = 1.0/2.0;
+ parBOX[2] = 10.0/2.0;
+ gMC->Gsvolu("UTA3","BOX ",idtmed[1301-1],parBOX,kNparBOX);
+ xpos = 0.0;
+ ypos = 1.0/2.0 + fgkSMpltT - fgkFlength/2.0;
+ zpos = fgkSheight/2.0 - 1.5 - 10.0/2.0;
+ gMC->Gspos("UTA3",1,"UTF1", xpos, ypos, zpos, 0,"ONLY");
+ gMC->Gspos("UTA3",2,"UTF2", xpos,-ypos, zpos, 0,"ONLY");
+
}
//_____________________________________________________________________________
// Services in front of the super module
//
+ // Gas in-/outlet pipes (INOX)
+ parTube[0] = 0.0;
+ parTube[1] = 0.0;
+ parTube[2] = 0.0;
+ gMC->Gsvolu("UTG3","TUBE",idtmed[1308-1],parTube,0);
+ // The gas inside the in-/outlet pipes (Xe)
+ parTube[0] = 0.0;
+ parTube[1] = 1.2/2.0;
+ parTube[2] = -1.0;
+ gMC->Gsvolu("UTG4","TUBE",idtmed[1309-1],parTube,kNparTube);
+ xpos = 0.0;
+ ypos = 0.0;
+ zpos = 0.0;
+ gMC->Gspos("UTG4",1,"UTG3",xpos,ypos,zpos,0,"ONLY");
+ for (iplan = 0; iplan < kNplan-1; iplan++) {
+ xpos = 0.0;
+ ypos = fClength[iplan][2]/2.0
+ + fClength[iplan][1]
+ + fClength[iplan][0];
+ zpos = 9.0 - fgkSheight/2.0
+ + iplan * (fgkCH + fgkVspace);
+ parTube[0] = 0.0;
+ parTube[1] = 1.5/2.0;
+ parTube[2] = fCwidth[iplan]/2.0 - 2.5;
+ gMC->Gsposp("UTG3",iplan+1 ,"UTI1", xpos, ypos, zpos
+ ,matrix[2],"ONLY",parTube,kNparTube);
+ gMC->Gsposp("UTG3",iplan+1+1*kNplan,"UTI1", xpos,-ypos, zpos
+ ,matrix[2],"ONLY",parTube,kNparTube);
+ gMC->Gsposp("UTG3",iplan+1+2*kNplan,"UTI2", xpos, ypos, zpos
+ ,matrix[2],"ONLY",parTube,kNparTube);
+ gMC->Gsposp("UTG3",iplan+1+3*kNplan,"UTI2", xpos,-ypos, zpos
+ ,matrix[2],"ONLY",parTube,kNparTube);
+ gMC->Gsposp("UTG3",iplan+1+4*kNplan,"UTI3", xpos, ypos, zpos
+ ,matrix[2],"ONLY",parTube,kNparTube);
+ gMC->Gsposp("UTG3",iplan+1+5*kNplan,"UTI3", xpos,-ypos, zpos
+ ,matrix[2],"ONLY",parTube,kNparTube);
+ }
+
// Gas distribution box
parBox[0] = 14.50/2.0;
parBox[1] = 4.52/2.0;
parTube[0] = 0.0;
parTube[1] = 3.0/2.0;
parTube[2] = 18.0/2.0;
- gMC->Gsvolu("UTCH","TUBE",idtmed[1308-1],parTube,kNparTube);
+ gMC->Gsvolu("UTCO","TUBE",idtmed[1308-1],parTube,kNparTube);
parTube[0] = 0.0;
parTube[1] = 3.0/2.0 - 0.3;
parTube[2] = 18.0/2.0;
xpos = 0.0;
ypos = 0.0;
zpos = 0.0;
- gMC->Gspos("UTCL",1,"UTCH", xpos, ypos, zpos, 0,"ONLY");
+ gMC->Gspos("UTCL",1,"UTCO", xpos, ypos, zpos, 0,"ONLY");
xpos = 0.0;
ypos = 2.5;
zpos = -70.0/2.0 + 7.0;
- gMC->Gspos("UTCH",1,"UTCM", xpos, ypos, zpos,matrix[4],"ONLY");
+ gMC->Gspos("UTCO",1,"UTCM", xpos, ypos, zpos,matrix[4],"ONLY");
zpos += 7.0;
- gMC->Gspos("UTCH",2,"UTCM", xpos, ypos, zpos,matrix[4],"ONLY");
+ gMC->Gspos("UTCO",2,"UTCM", xpos, ypos, zpos,matrix[4],"ONLY");
zpos += 7.0;
- gMC->Gspos("UTCH",3,"UTCM", xpos, ypos, zpos,matrix[4],"ONLY");
+ gMC->Gspos("UTCO",3,"UTCM", xpos, ypos, zpos,matrix[4],"ONLY");
zpos += 7.0;
- gMC->Gspos("UTCH",4,"UTCM", xpos, ypos, zpos,matrix[4],"ONLY");
+ gMC->Gspos("UTCO",4,"UTCM", xpos, ypos, zpos,matrix[4],"ONLY");
zpos += 7.0;
- gMC->Gspos("UTCH",5,"UTCM", xpos, ypos, zpos,matrix[4],"ONLY");
+ gMC->Gspos("UTCO",5,"UTCM", xpos, ypos, zpos,matrix[4],"ONLY");
zpos += 7.0;
- gMC->Gspos("UTCH",6,"UTCM", xpos, ypos, zpos,matrix[4],"ONLY");
+ gMC->Gspos("UTCO",6,"UTCM", xpos, ypos, zpos,matrix[4],"ONLY");
zpos += 7.0;
- gMC->Gspos("UTCH",7,"UTCM", xpos, ypos, zpos,matrix[4],"ONLY");
+ gMC->Gspos("UTCO",7,"UTCM", xpos, ypos, zpos,matrix[4],"ONLY");
zpos += 7.0;
- gMC->Gspos("UTCH",8,"UTCM", xpos, ypos, zpos,matrix[4],"ONLY");
+ gMC->Gspos("UTCO",8,"UTCM", xpos, ypos, zpos,matrix[4],"ONLY");
xpos = 40.0;
ypos = fgkFlength/2.0 - 23.0/2.0;
path = pne->GetTitle();
}
if (!strstr(path,"ALIC")) {
- AliError(Form("Not a valid path: %s\n",path));
AliDebug(1,Form("Not a valid path: %s\n",path));
continue;
}
rotSector.RotateZ(sectorAngle);
rotMatrix.MultiplyLeft(&rotSector.Inverse());
- AliWarning(Form("Add matrix: %d\n",lid));
fClusterMatrixArray->AddAt(new TGeoHMatrix(rotMatrix),lid);
}
}
+//_____________________________________________________________________________
+Bool_t AliTRDgeometry::ChamberInGeometry(Int_t det)
+{
+ //
+ // Checks whether the given detector is part of the current geometry
+ //
+
+ if (!fClusterMatrixArray) {
+ CreateClusterMatrixArray();
+ }
+
+ if (!GetClusterMatrix(det)) {
+ return kFALSE;
+ }
+ else {
+ return kTRUE;
+ }
+
+}