// and AliITSgeomSSD for a more detailed example.
////////////////////////////////////////////////////////////////////////
#include <Riostream.h>
-//#include <stdlib.h>
-//#include <stdio.h>
-//#include <string.h>
-//#include <ctype.h>
-#include <TSystem.h>
#include <TRandom.h>
+#include <TSystem.h>
#include "AliITSgeom.h"
-#include "AliITSgeomSPD.h"
#include "AliITSgeomSDD.h"
+#include "AliITSgeomSPD.h"
#include "AliITSgeomSSD.h"
+#include "AliLog.h"
ClassImp(AliITSgeom)
char *filtmp=0;
filtmp = gSystem->ExpandPathName(filename);
- cout << "AliITSgeom, Reading New .det file " << filtmp << endl;
+ AliInfo(Form("Reading New .det file %s",filtmp));
fp = new ifstream(filtmp,ios::in); // open file to write
while(fp->get(c)!=NULL){ // for ever loop
if(c==' ') continue; // remove blanks
if(c=='\n') continue;
- if(c=='#' || c=='!'){for(;fp->get(c)!=NULL,c!='\n';); continue;}
+ if(c=='#' || c=='!') {while(fp->get(c)) if(c=='\n') break; continue;}
if(c=='/'){
fp->get(c);{
- if(c=='/'){for(;fp->get(c)!=NULL,c!='\n';);continue;}
+ if(c=='/') {while(fp->get(c)) if(c=='\n') break; continue;}
if(c=='*'){
NotYet:
- for(;fp->get(c)!=NULL,c!='*';);
+ while(fp->get(c)) if(c=='*') break;
fp->get(c);{
if(c=='/') continue;
goto NotYet;
ssd = 0;
break;
default:
- Error("ReadNewFile","Unknown fShape type number=%d c=%c",ldet,c);
- for(;fp->get(c)==NULL,c!='\n';); // skip to end of line.
+ AliError(Form("Unknown fShape type number=%d c=%c",ldet,c));
+ while(fp->get(c)) if(c=='\n') break; // skip to end of line.
break;
} // end switch
break;
m = 0;
break;
default:
- Error("ReadNewFile","Data line i=%d c=%c",i,c);
- for(;fp->get(c)==NULL,c!='\n';); // skip this line
+ AliError(Form("ReadNewFile","Data line i=%d c=%c",i,c));
+ while(fp->get(c)) if(c=='\n') break; // skip this line
break;
} // end switch i
} // end while
fclose(pf);
}
//______________________________________________________________________
-AliITSgeom::AliITSgeom(AliITSgeom &source) : TObject(source){
+AliITSgeom::AliITSgeom(const AliITSgeom &source) : TObject(source){
// The copy constructor for the AliITSgeom class. It calls the
// = operator function. See the = operator function for more details.
// Inputs are:
return;
}
//______________________________________________________________________
-AliITSgeom& AliITSgeom::operator=(AliITSgeom &source){
+AliITSgeom& AliITSgeom::operator=(const AliITSgeom &source){
// The = operator function for the AliITSgeom class. It makes an
// independent copy of the class in such a way that any changes made
// to the copied class will not affect the source class in any way.
return *this;
}
//______________________________________________________________________
-inline Int_t AliITSgeom::GetNdetectors(Int_t lay) const {
- // Return the number of detectors/ladder for the given layer
- // Inputs:
- // Int_t lay the layer number
- // Outputs:
- // none.
- // Return:
- // Int_t the number of detectors/ladders for the give layer
- Int_t ndet;
-
- ndet = fNdet[lay-1];
- return ndet;
-}
-//______________________________________________________________________
-inline Int_t AliITSgeom::GetNladders(Int_t lay) const {
- // Return the number of ladders for the given layer
- // Inputs:
- // Int_t lay the layer number
- // Outputs:
- // none.
- // Return:
- // Int_t the number of ladders for the give layer
- Int_t nlad;
-
- nlad = fNlad[lay-1];
- return nlad;
-}
-//______________________________________________________________________
Int_t AliITSgeom::GetModuleIndex(Int_t lay,Int_t lad,Int_t det){
// This routine computes the module index number from the layer,
// ladder, and detector numbers. The number of ladders and detectors
j = 0;
for(k=0;k<lay-1;k++) j += fNdet[k]*fNlad[k];
i = i+j;
+ if(i>=fNmodules) return -1;
GetGeomMatrix(i)->GetIndex(id);
if(id[0]==lay&&id[1]==lad&&id[2]==det) return i;
// Array of modules fGm is not in expected order. Search for this index
return 0;
}
//______________________________________________________________________
-inline void AliITSgeom::GetCenterThetaPhi(Int_t lay,Int_t lad,Int_t det,
- TVector &x){
- // This function returns the Cartesian translation [cm] and the
- // 6 GEANT rotation angles [degrees]for a given layer ladder and
- // detector number, in the TVector x (at least 9 elements large).
- // Inputs:
- // Int_t lay ITS Layer number
- // Int_t lad ITS Ladder number
- // Int_t det ITS Detector number
- // Outputs:
- // TVector &x The translation vector and the 6 rotaion angles
- // Return:
- // none.
- Double_t t[3],ang[6];
- Int_t index=GetModuleIndex(lay,lad,det);
-
- GetTrans(index,t);
- GetGeantAngles(index,ang);
- x(0) = t[0];x(1) = t[1];x(2) = t[2];
- x(3) = ang[0];x(4) = ang[1];x(5) = ang[2];
- x(6) = ang[3];x(7) = ang[4];x(8) = ang[5];
-}
-//______________________________________________________________________
void AliITSgeom::PrintComparison(FILE *fp,AliITSgeom *other){
// This function was primarily created for diagnostic reasons. It
// print to a file pointed to by the file pointer fp the difference