fIshunt = 0; // not zeroed in AliDetector
fHits = new TClonesArray("AliITShit", 1560);//not done in AliDetector
- if(gAlice->GetMCApp()) gAlice->GetMCApp()->AddHitList(fHits);// Not done in AliDetector.
+ // Not done in AliDetector.
+ if(gAlice->GetMCApp()) gAlice->GetMCApp()->AddHitList(fHits);
fEuclidOut = 0;
fITSgeom = 0;
return *this; //fake return
}
//______________________________________________________________________
-Int_t AliITS::DistancetoPrimitive(Int_t,Int_t) const{
- // Distance from mouse to ITS on the screen. Dummy routine
- // A dummy routine used by the ROOT macro display.C to allow for the
- // use of the mouse (pointing device) in the macro. In general this should
- // never be called. If it is it returns the number 9999 for any value of
- // x and y.
+AliDigitizer* AliITS::CreateDigitizer(AliRunDigitizer* manager)const{
+ // Creates the AliITSDigitizer in a standard way for use via AliModule.
+ // This function can not be included in the .h file because of problems
+ // with the order of inclusion (recursive).
// Inputs:
- // Int_t Dummy screen coordinate.
- // Int_t Dummy screen coordinate.
- // Outputs:
- // none.
+ // AliRunDigitizer *manager The Manger class for Digitization
+ // Output:
+ // none.
// Return:
- // Int_t Dummy = 9999 distance to ITS.
+ // A new AliITSRunDigitizer (cast as a AliDigitizer).
- return 9999;
+ return new AliITSDigitizer(manager);
}
//______________________________________________________________________
void AliITS::Init(){
// none.
// Return:
// none.
-
- if(fDebug) printf("%s: SetDefaults\n",ClassName());
-
+ AliITSsegmentation *seg;
+ AliITSresponse *resp;
AliITSDetType *iDetType;
+ if(fDebug) Info("SetDefauls","%s: SetDefaults",ClassName());
+
//SPD
- iDetType=DetType(0);
- if (!iDetType->GetSegmentationModel()) {
- AliITSsegmentationSPD *seg0=new AliITSsegmentationSPD(fITSgeom);
- SetSegmentationModel(0,seg0);
- } // end if
- if (!iDetType->GetResponseModel()) {
- SetResponseModel(0,new AliITSresponseSPD());
- } // end if
- // set digit and raw cluster classes to be used
+ iDetType = DetType(kSPD);
+ if(iDetType){
+ if (!iDetType->GetSegmentationModel()) {
+ seg = new AliITSsegmentationSPD(fITSgeom);
+ SetSegmentationModel(kSPD,seg);
+ } // end if
+ if (!iDetType->GetResponseModel()) {
+ SetResponseModel(kSPD,new AliITSresponseSPD());
+ } // end if
+ // set digit and raw cluster classes to be used
- const char *kData0=(iDetType->GetResponseModel())->DataType();
- if (strstr(kData0,"real")) {
- iDetType->ClassNames("AliITSdigit","AliITSRawClusterSPD");
- } else iDetType->ClassNames("AliITSdigitSPD","AliITSRawClusterSPD");
+ const char *kData0=(iDetType->GetResponseModel())->DataType();
+ if (strstr(kData0,"real")) {
+ iDetType->ClassNames("AliITSdigit","AliITSRawClusterSPD");
+ } else iDetType->ClassNames("AliITSdigitSPD","AliITSRawClusterSPD");
+ } // end if iDetType
// SDD
- iDetType=DetType(1);
- if (!iDetType->GetResponseModel()) {
- SetResponseModel(1,new AliITSresponseSDD("simulated"));
- } // end if
- AliITSresponse *resp1=iDetType->GetResponseModel();
- if (!iDetType->GetSegmentationModel()) {
- AliITSsegmentationSDD *seg1=new AliITSsegmentationSDD(fITSgeom,resp1);
- SetSegmentationModel(1,seg1);
- } // end if
- const char *kData1=(iDetType->GetResponseModel())->DataType();
- const char *kopt=iDetType->GetResponseModel()->ZeroSuppOption();
- if((!strstr(kopt,"2D"))&&(!strstr(kopt,"1D")) || strstr(kData1,"real") ){
- iDetType->ClassNames("AliITSdigit","AliITSRawClusterSDD");
- } else iDetType->ClassNames("AliITSdigitSDD","AliITSRawClusterSDD");
+ iDetType = DetType(kSDD);
+ if(iDetType){
+ if (!iDetType->GetResponseModel()) {
+ SetResponseModel(kSDD,new AliITSresponseSDD("simulated"));
+ } // end if
+ resp = iDetType->GetResponseModel();
+ if (!iDetType->GetSegmentationModel()) {
+ seg = new AliITSsegmentationSDD(fITSgeom,resp);
+ SetSegmentationModel(kSDD,seg);
+ } // end if
+ const char *kData1 = (iDetType->GetResponseModel())->DataType();
+ const char *kopt = iDetType->GetResponseModel()->ZeroSuppOption();
+ if((!strstr(kopt,"2D"))&&(!strstr(kopt,"1D")) ||
+ strstr(kData1,"real") ){
+ iDetType->ClassNames("AliITSdigit","AliITSRawClusterSDD");
+ } else iDetType->ClassNames("AliITSdigitSDD","AliITSRawClusterSDD");
+ } // end if iDetType
// SSD
- iDetType=DetType(2);
- if (!iDetType->GetSegmentationModel()) {
- AliITSsegmentationSSD *seg2=new AliITSsegmentationSSD(fITSgeom);
- SetSegmentationModel(2,seg2);
- } // end if
- if (!iDetType->GetResponseModel()) {
- SetResponseModel(2,new AliITSresponseSSD("simulated"));
- } // end if
- const char *kData2=(iDetType->GetResponseModel())->DataType();
- if (strstr(kData2,"real")) {
- iDetType->ClassNames("AliITSdigit","AliITSRawClusterSSD");
- } else iDetType->ClassNames("AliITSdigitSSD","AliITSRawClusterSSD");
+ iDetType = DetType(kSSD);
+ if(iDetType){
+ if (!iDetType->GetSegmentationModel()) {
+ seg = new AliITSsegmentationSSD(fITSgeom);
+ SetSegmentationModel(kSSD,seg);
+ } // end if
+ if (!iDetType->GetResponseModel()) {
+ SetResponseModel(kSSD,new AliITSresponseSSD("simulated"));
+ } // end if
+ const char *kData2 = (iDetType->GetResponseModel())->DataType();
+ if (strstr(kData2,"real")) {
+ iDetType->ClassNames("AliITSdigit","AliITSRawClusterSSD");
+ } else iDetType->ClassNames("AliITSdigitSSD","AliITSRawClusterSSD");
+ } // end if iDetType
if (kNTYPES>3) {
Warning("SetDefaults",
// none.
// Return:
// none.
-
AliITSDetType *iDetType;
AliITSsimulation *sim;
- iDetType=DetType(0);
- sim = iDetType->GetSimulationModel();
- if (!sim) {
- AliITSsegmentation *seg0=
- (AliITSsegmentation*)iDetType->GetSegmentationModel();
- AliITSresponse *res0 = (AliITSresponse*)iDetType->GetResponseModel();
- AliITSsimulationSPD *sim0=new AliITSsimulationSPD(seg0,res0);
- SetSimulationModel(0,sim0);
- }else{ // simulation exists, make sure it is set up properly.
- ((AliITSsimulationSPD*)sim)->Init(
- (AliITSsegmentationSPD*) iDetType->GetSegmentationModel(),
- (AliITSresponseSPD*) iDetType->GetResponseModel());
-// if(sim->GetResponseModel()==0) sim->SetResponseModel(
-// (AliITSresponse*)iDetType->GetResponseModel());
-// if(sim->GetSegmentationModel()==0) sim->SetSegmentationModel(
-// (AliITSsegmentation*)iDetType->GetSegmentationModel());
- } // end if
- iDetType=DetType(1);
- sim = iDetType->GetSimulationModel();
- if (!sim) {
- AliITSsegmentation *seg1=
- (AliITSsegmentation*)iDetType->GetSegmentationModel();
- AliITSresponse *res1 = (AliITSresponse*)iDetType->GetResponseModel();
- AliITSsimulationSDD *sim1=new AliITSsimulationSDD(seg1,res1);
- SetSimulationModel(1,sim1);
- }else{ // simulation exists, make sure it is set up properly.
- ((AliITSsimulationSDD*)sim)->Init(
- (AliITSsegmentationSDD*) iDetType->GetSegmentationModel(),
- (AliITSresponseSDD*) iDetType->GetResponseModel());
-// if(sim->GetResponseModel()==0) sim->SetResponseModel(
-// (AliITSresponse*)iDetType->GetResponseModel());
-// if(sim->GetSegmentationModel()==0) sim->SetSegmentationModel(
-// (AliITSsegmentation*)iDetType->GetSegmentationModel());
- } //end if
- iDetType=DetType(2);
- sim = iDetType->GetSimulationModel();
- if (!sim) {
- AliITSsegmentation *seg2=
- (AliITSsegmentation*)iDetType->GetSegmentationModel();
- AliITSresponse *res2 = (AliITSresponse*)iDetType->GetResponseModel();
- AliITSsimulationSSD *sim2=new AliITSsimulationSSD(seg2,res2);
- SetSimulationModel(2,sim2);
- }else{ // simulation exists, make sure it is set up properly.
- ((AliITSsimulationSSD*)sim)->Init(
- (AliITSsegmentationSSD*) iDetType->GetSegmentationModel(),
- (AliITSresponseSSD*) iDetType->GetResponseModel());
-// if(sim->GetResponseModel()==0) sim->SetResponseModel(
-// (AliITSresponse*)iDetType->GetResponseModel());
-// if(sim->GetSegmentationModel()==0) sim->SetSegmentationModel(
-// (AliITSsegmentation*)iDetType->GetSegmentationModel());
- } // end if
+ AliITSsegmentation *seg;
+ AliITSresponse *res;
+
+ iDetType = DetType(kSPD);
+ if(iDetType){
+ sim = iDetType->GetSimulationModel();
+ if (!sim) {
+ seg = (AliITSsegmentation*)iDetType->GetSegmentationModel();
+ res = (AliITSresponse*)iDetType->GetResponseModel();
+ sim = new AliITSsimulationSPD(seg,res);
+ SetSimulationModel(kSPD,sim);
+ }else{ // simulation exists, make sure it is set up properly.
+ if(sim->GetResponseModel()==0) sim->SetResponseModel(
+ (AliITSresponse*)iDetType->GetResponseModel());
+ if(sim->GetSegmentationModel()==0) sim->SetSegmentationModel(
+ (AliITSsegmentation*)iDetType->GetSegmentationModel());
+ sim->Init();
+ } // end if
+ }// end if iDetType
+ iDetType = DetType(kSDD);
+ if(iDetType){
+ sim = iDetType->GetSimulationModel();
+ if (!sim) {
+ seg = (AliITSsegmentation*)iDetType->GetSegmentationModel();
+ res = (AliITSresponse*)iDetType->GetResponseModel();
+ sim = new AliITSsimulationSDD(seg,res);
+ SetSimulationModel(kSDD,sim);
+ }else{ // simulation exists, make sure it is set up properly.
+ if(sim->GetResponseModel()==0) sim->SetResponseModel(
+ (AliITSresponse*)iDetType->GetResponseModel());
+ if(sim->GetSegmentationModel()==0) sim->SetSegmentationModel(
+ (AliITSsegmentation*)iDetType->GetSegmentationModel());
+ sim->Init();
+ } //end if
+ }// end if iDetType
+ iDetType = DetType(kSSD);
+ if(iDetType){
+ sim = iDetType->GetSimulationModel();
+ if (!sim) {
+ seg =(AliITSsegmentation*)iDetType->GetSegmentationModel();
+ res = (AliITSresponse*)iDetType->GetResponseModel();
+ sim = new AliITSsimulationSSD(seg,res);
+ SetSimulationModel(kSSD,sim);
+ }else{ // simulation exists, make sure it is set up properly.
+ if(sim->GetResponseModel()==0) sim->SetResponseModel(
+ (AliITSresponse*)iDetType->GetResponseModel());
+ if(sim->GetSegmentationModel()==0) sim->SetSegmentationModel(
+ (AliITSsegmentation*)iDetType->GetSegmentationModel());
+ sim->Init();
+ } // end if
+ } // end if iDetType
}
//______________________________________________________________________
void AliITS::SetDefaultClusterFinders(){
// none.
// Return:
// none.
+ AliITSDetType *iDetType;
+ AliITSsegmentation *seg;
+ AliITSClusterFinder *clf;
+ AliITSresponse *res;
MakeTreeC();
- AliITSDetType *iDetType;
// SPD
- iDetType=DetType(0);
- if (!iDetType->GetReconstructionModel()) {
- AliITSsegmentation *seg0 =
- (AliITSsegmentation*)iDetType->GetSegmentationModel();
- TClonesArray *dig0=DigitsAddress(0);
- TClonesArray *recp0=ClustersAddress(0);
- AliITSClusterFinderSPD *rec0 = new AliITSClusterFinderSPD(seg0,dig0,
- recp0);
- SetReconstructionModel(0,rec0);
- } // end if
+ iDetType=DetType(kSPD);
+ if(iDetType){
+ if (!iDetType->GetReconstructionModel()) {
+ seg =(AliITSsegmentation*)iDetType->GetSegmentationModel();
+ TClonesArray *dig0 = DigitsAddress(0);
+ TClonesArray *recp0 = ClustersAddress(0);
+ clf = new AliITSClusterFinderSPD(seg,dig0,recp0);
+ SetReconstructionModel(kSPD,clf);
+ } // end if
+ } // end if iDetType
// SDD
- iDetType=DetType(1);
- if (!iDetType->GetReconstructionModel()) {
- AliITSsegmentation *seg1 =
- (AliITSsegmentation*)iDetType->GetSegmentationModel();
- AliITSresponse *res1 = (AliITSresponse*)iDetType->GetResponseModel();
- TClonesArray *dig1=DigitsAddress(1);
- TClonesArray *recp1=ClustersAddress(1);
- AliITSClusterFinderSDD *rec1 =
- new AliITSClusterFinderSDD(seg1,res1,dig1,recp1);
- SetReconstructionModel(1,rec1);
- } // end if
+ iDetType=DetType(kSDD);
+ if(iDetType){
+ if (!iDetType->GetReconstructionModel()) {
+ seg = (AliITSsegmentation*)iDetType->GetSegmentationModel();
+ res = (AliITSresponse*)iDetType->GetResponseModel();
+ TClonesArray *dig1 = DigitsAddress(1);
+ TClonesArray *recp1 = ClustersAddress(1);
+ clf = new AliITSClusterFinderSDD(seg,res,dig1,recp1);
+ SetReconstructionModel(kSDD,clf);
+ } // end if
+ } // end if iDetType
// SSD
- iDetType=DetType(2);
- if (!iDetType->GetReconstructionModel()) {
- AliITSsegmentation *seg2=
- (AliITSsegmentation*)iDetType->GetSegmentationModel();
- TClonesArray *dig2=DigitsAddress(2);
- AliITSClusterFinderSSD *rec2= new AliITSClusterFinderSSD(seg2,dig2);
- SetReconstructionModel(2,rec2);
- } // end if
+ iDetType=DetType(kSSD);
+ if(iDetType){
+ if (!iDetType->GetReconstructionModel()) {
+ seg = (AliITSsegmentation*)iDetType->GetSegmentationModel();
+ TClonesArray *dig2 = DigitsAddress(2);
+ clf = new AliITSClusterFinderSSD(seg,dig2);
+ SetReconstructionModel(kSSD,clf);
+ } // end if
+ } // end if iDetType
}
//______________________________________________________________________
void AliITS::MakeBranch(Option_t* option){
TTree *treeS = fLoader->TreeS();
TTree *treeD = fLoader->TreeD();
TTree *treeR = fLoader->TreeR();
- if (fLoader->TreeH() && (fHits == 0x0)) fHits = new TClonesArray("AliITShit", 1560);
-
+ if (fLoader->TreeH() && (fHits == 0x0))
+ fHits = new TClonesArray("AliITShit", 1560);
+
AliDetector::SetTreeAddress();
SetTreeAddressS(treeS);
SetTreeAddressR(treeR);
}
//______________________________________________________________________
-AliITSDetType* AliITS::DetType(Int_t id){
- // Return pointer to id detector type.
- // Inputs:
- // Int_t id detector id number.
- // Outputs:
- // none.
- // Return:
- // returned, a pointer to a AliITSDetType.
-
- return ((AliITSDetType*) fDetTypes->At(id));
-}
-//______________________________________________________________________
-void AliITS::SetResponseModel(Int_t id, AliITSresponse *response){
- // Set the response model for the id detector type.
- // Inputs:
- // Int_t id detector id number.
- // AliITSresponse* a pointer containing an instance of AliITSresponse
- // to be stored/owned b y AliITSDetType.
- // Outputs:
- // none.
- // Return:
- // none.
-
- ((AliITSDetType*) fDetTypes->At(id))->ResponseModel(response);
-}
-//______________________________________________________________________
-void AliITS::SetSegmentationModel(Int_t id, AliITSsegmentation *seg){
- // Set the segmentation model for the id detector type.
- // Inputs:
- // Int_t id detector id number.
- // AliITSsegmentation* a pointer containing an instance of
- // AliITSsegmentation to be stored/owned b y
- // AliITSDetType.
- // Outputs:
- // none.
- // Return:
- // none.
-
- ((AliITSDetType*) fDetTypes->At(id))->SegmentationModel(seg);
-}
-//______________________________________________________________________
-void AliITS::SetSimulationModel(Int_t id, AliITSsimulation *sim){
- // Set the simulation model for the id detector type.
- // Inputs:
- // Int_t id detector id number.
- // AliITSresponse* a pointer containing an instance of AliITSresponse
- // to be stored/owned b y AliITSDetType.
- // Outputs:
- // none.
- // Return:
- // none.
-
- ((AliITSDetType*) fDetTypes->At(id))->SimulationModel(sim);
-
-}
-//______________________________________________________________________
-void AliITS::SetReconstructionModel(Int_t id, AliITSClusterFinder *reconst){
- // Set the cluster finder model for the id detector type.
- // Inputs:
- // Int_t id detector id number.
- // AliITSClusterFinder* a pointer containing an instance of
- // AliITSClusterFinder to be stored/owned b y
- // AliITSDetType.
- // Outputs:
- // none.
- // Return:
- // none.
-
- ((AliITSDetType*) fDetTypes->At(id))->ReconstructionModel(reconst);
-}
-//______________________________________________________________________
-void AliITS::SetClasses(Int_t id, const char *digit, const char *cluster){
- // Set the digit and cluster classes name to be used for the id detector
- // type.
- // Inputs:
- // Int_t id detector id number.
- // const char *digit Digit class name for detector id.
- // const char *cluster Cluster class name for detector id.
- // Outputs:
- // none.
- // Return:
- // none.
-
- ((AliITSDetType*) fDetTypes->At(id))->ClassNames(digit,cluster);
-}
-//______________________________________________________________________
void AliITS::AddHit(Int_t track, Int_t *vol, Float_t *hits){
// Add an ITS hit
// The function to add information to the AliITShit class. See the
return;
} // end if fITSgeom==0
nl = fITSgeom->GetNlayers();
- indexMAX = fITSgeom->GetModuleIndex(nl,fITSgeom->GetNladders(nl),
- fITSgeom->GetNdetectors(nl))+1;
+ indexMAX = fITSgeom->GetIndexMax();
nmodules = indexMAX;
fITSmodules = new TObjArray(indexMAX);
for(index=0;index<indexMAX;index++){
} // end loop over tracks
}
//______________________________________________________________________
-void AliITS::ClearModules(){
- // Clear the modules TObjArray.
- // Inputs:
- // none.
- // Outputs:
- // none.
-
- if(fITSmodules) fITSmodules->Delete();
-}
-//______________________________________________________________________
void AliITS::MakeBranchS(const char *fl){
// Creates Tree Branch for the ITS summable digits.
// Inputs:
if(fLoader->TreeS()){
- if (fSDigits == 0x0) fSDigits = new TClonesArray("AliITSpListItem",1000);
+ if(fSDigits==0x0) fSDigits = new TClonesArray("AliITSpListItem",1000);
MakeBranchInTree(fLoader->TreeS(),branchname,&fSDigits,buffersize,fl);
} // end if
}
// none.
// Return:
// none.
- Int_t buffersize = 4000;
- char branchname[30];
-
- sprintf(branchname,"%s",GetName());
// one branch for digits per type of detector
- const char *det[3] = {"SPD","SDD","SSD"};
- char digclass[40];
- char clclass[40];
+ const Char_t *det[3] = {"SPD","SDD","SSD"};
+ TString digclass;
Int_t i;
+ Int_t buffersize = 4000;
+ Char_t branchname[30];
+
+ if (fDtype == 0x0) fDtype = new TObjArray(fNDetTypes);
for (i=0; i<kNTYPES ;i++) {
- DetType(i)->GetClassNames(digclass,clclass);
+ digclass = DetType(i)->GetDigitClassName();
// digits
- if (fDtype == 0x0) fDtype = new TObjArray(fNDetTypes);
- if(!(fDtype->At(i))) fDtype->AddAt(new TClonesArray(digclass,1000),i);
- else ResetDigits(i);
+ if(!(fDtype->At(i))){
+ fDtype->AddAt(new TClonesArray(digclass.Data(),1000),i);
+ }else{
+ ResetDigits(i);
+ } // end if
+ if (kNTYPES==3) sprintf(branchname,"%sDigits%s",GetName(),det[i]);
+ else sprintf(branchname,"%sDigits%d",GetName(),i+1);
+ if (fDtype && treeD) {
+ MakeBranchInTree(treeD,branchname,&((*fDtype)[i]),buffersize,file);
+ } // end if
} // end for i
+ /*
for (i=0; i<kNTYPES ;i++) {
if (kNTYPES==3) sprintf(branchname,"%sDigits%s",GetName(),det[i]);
else sprintf(branchname,"%sDigits%d",GetName(),i+1);
if (fDtype && treeD) {
- MakeBranchInTree(treeD, branchname, &((*fDtype)[i]),buffersize,file);
+ MakeBranchInTree(treeD,branchname,&((*fDtype)[i]),buffersize,file);
} // end if
} // end for i
+ */
}
//______________________________________________________________________
void AliITS::SetTreeAddressD(TTree *treeD){
// none.
// Return:
// none.
- char branchname[30];
const char *det[3] = {"SPD","SDD","SSD"};
TBranch *branch;
- char digclass[40];
- char clclass[40];
+ TString digclass;
Int_t i;
+ char branchname[30];
if(!treeD) return;
+ if (fDtype == 0x0) fDtype = new TObjArray(fNDetTypes);
for (i=0; i<kNTYPES; i++) {
- DetType(i)->GetClassNames(digclass,clclass);
+ digclass = DetType(i)->GetDigitClassName();
// digits
- if (fDtype == 0x0) fDtype = new TObjArray(fNDetTypes);
- if(!(fDtype->At(i))) fDtype->AddAt(new TClonesArray(digclass,1000),i);
- else ResetDigits(i);
+ if(!(fDtype->At(i))) {
+ fDtype->AddAt(new TClonesArray(digclass.Data(),1000),i);
+ }else{
+ ResetDigits(i);
+ } // end if
if (kNTYPES==3) sprintf(branchname,"%sDigits%s",GetName(),det[i]);
else sprintf(branchname,"%sDigits%d",GetName(),i+1);
if (fDtype) {
// Outputs:
// none.
-// return; // Using Hits in place of the larger sDigits.
fLoader->LoadHits("read");
fLoader->LoadSDigits("recreate");
AliRunLoader* rl = fLoader->GetRunLoader();
for (Int_t iEvent = 0; iEvent < rl->GetNumberOfEvents(); iEvent++) {
- // Do the Hits to Digits operation. Use Standard input values.
- // Event number from file, no background hit merging , use size from
- // AliITSgeom class, option="All", input from this file only.
- rl->GetEvent(iEvent);
- if (!fLoader->TreeS()) fLoader->MakeTree("S");
- MakeBranch("S");
- SetTreeAddress();
- HitsToSDigits(iEvent,0,-1," ",fOpt," ");
- }
+ // Do the Hits to Digits operation. Use Standard input values.
+ // Event number from file, no background hit merging , use size from
+ // AliITSgeom class, option="All", input from this file only.
+ rl->GetEvent(iEvent);
+ if (!fLoader->TreeS()) fLoader->MakeTree("S");
+ MakeBranch("S");
+ SetTreeAddress();
+ HitsToPreDigits(iEvent,0,-1," ",fOpt," ");
+ } // end for iEvent
fLoader->UnloadHits();
fLoader->UnloadSDigits();
}
//______________________________________________________________________
-void AliITS::Hits2PreDigits(){
- // Standard Hits to summable Digits function.
- // Inputs:
- // none.
- // Outputs:
- // none.
-
- AliHeader *header=fLoader->GetRunLoader()->GetHeader(); // Get event number from this file.
- // Do the Hits to Digits operation. Use Standard input values.
- // Event number from file, no background hit merging , use size from
- // AliITSgeom class, option="All", input from this file only.
- HitsToPreDigits(header->GetEvent(),0,-1," ",fOpt," ");
-}
-//______________________________________________________________________
-AliDigitizer* AliITS::CreateDigitizer(AliRunDigitizer* manager) const
-{
- return new AliITSDigitizer(manager);
-}
-//______________________________________________________________________
void AliITS::SDigitsToDigits(Option_t *opt){
// Standard Summable digits to Digits function.
// Inputs:
strstr(opt,"SSD")};
if( !det[0] && !det[1] && !det[2] ) all = "All";
else all = 0;
- static Bool_t setDef=kTRUE;
- if (setDef) SetDefaultSimulation();
- setDef=kFALSE;
+ static Bool_t setDef = kTRUE;
+ if(setDef) SetDefaultSimulation();
+ setDef = kFALSE;
AliITSsimulation *sim = 0;
AliITSDetType *iDetType = 0;
exit(1);
} // end if !sim
sim->InitSimulationModule(module,gAlice->GetEvNumber());
-//
+ //
// add summable digits to module
this->GetSDigits()->Clear();
brchSDigits->GetEvent(module);
sim->AddSDigitsToModule(GetSDigits(),0);
-//
+ //
// Digitise current module sum(SDigits)->Digits
sim->FinishSDigitiseModule();
AliRunLoader* rl = fLoader->GetRunLoader();
for (Int_t iEvent = 0; iEvent < rl->GetNumberOfEvents(); iEvent++) {
- // Do the Hits to Digits operation. Use Standard input values.
- // Event number from file, no background hit merging , use size from
- // AliITSgeom class, option="All", input from this file only.
- rl->GetEvent(iEvent);
- if (!fLoader->TreeD()) fLoader->MakeTree("D");
- MakeBranch("D");
- SetTreeAddress();
- HitsToDigits(iEvent,0,-1," ",fOpt," ");
- }
+ // Do the Hits to Digits operation. Use Standard input values.
+ // Event number from file, no background hit merging , use size from
+ // AliITSgeom class, option="All", input from this file only.
+ rl->GetEvent(iEvent);
+ if (!fLoader->TreeD()) fLoader->MakeTree("D");
+ MakeBranch("D");
+ SetTreeAddress();
+ HitsToDigits(iEvent,0,-1," ",fOpt," ");
+ } // end for iEvent
fLoader->UnloadHits();
fLoader->UnloadDigits();
}
//______________________________________________________________________
-void AliITS::HitsToSDigits(Int_t evNumber,Int_t bgrev,Int_t size,
- Option_t *option, Option_t *opt, const char *filename){
- // keep galice.root for signal and name differently the file for
- // background when add! otherwise the track info for signal will be lost !
- // the condition below will disappear when the geom class will be
- // initialized for all versions - for the moment it is only for v5 !
- // 7 is the SDD beam test version. Dummy routine. Hits are ITS's Summable
- // Digits.
- // Inputs:
- // Int_t evnt Event to be processed.
- // Int_t bgrev Background Hit tree number.
- // Int_t nmodules Not used.
- // Option_t *option String indicating if merging hits or not. To
- // merge hits set equal to "Add". Otherwise no
- // background hits are considered.
- // Test_t *filename File name containing the background hits..
- // Outputs:
- // none.
- // Return:
- // none.
-// return; // using Hits instead of the larger sdigits.
-
- HitsToPreDigits(evNumber,bgrev,size,option,opt,filename);
-}
-//______________________________________________________________________
void AliITS::HitsToPreDigits(Int_t evNumber,Int_t bgrev,Int_t size,
- Option_t *option, Option_t *opt, const char *filename){
+ Option_t *option,Option_t *opt,
+ const char *filename){
// Keep galice.root for signal and name differently the file for
// background when add! otherwise the track info for signal will be lost !
// the condition below will disappear when the geom class will be
}
//______________________________________________________________________
void AliITS::HitsToDigits(Int_t evNumber,Int_t bgrev,Int_t size,
- Option_t *option, Option_t *opt, const char *filename){
+ Option_t *option,Option_t *opt,
+ const char *filename){
// Keep galice.root for signal and name differently the file for
// background when add! otherwise the track info for signal will be lost !
// the condition below will disappear when the geom class will be
fLoader->TreeD()->Reset();
}
//______________________________________________________________________
-void AliITS::ResetSDigits(){
- // Reset the Summable Digits array.
- // Inputs:
- // none.
- // Outputs:
- // none.
-
- if (fSDigits) fSDigits->Clear();
- fNSDigits = 0;
-}
-//______________________________________________________________________
void AliITS::ResetDigits(){
// Reset number of digits and the digits array for the ITS detector.
// Inputs:
Int_t i;
for (i=0;i<kNTYPES;i++ ) {
- if (fDtype->At(i)) ((TClonesArray*)fDtype->At(i))->Clear();
- if (fNdtype) fNdtype[i]=0;
+ ResetDigits(i);
} // end for i
}
//______________________________________________________________________
// Outputs:
// none.
- if (fDtype->At(i)) ((TClonesArray*)fDtype->At(i))->Clear();
- if (fNdtype) fNdtype[i]=0;
+ if (fDtype->At(i)) ((TClonesArray*)fDtype->At(i))->Clear();
+ if (fNdtype) fNdtype[i]=0;
}
//______________________________________________________________________
void AliITS::AddSumDigit(AliITSpListItem &sdig){
AliITSresponseSDD *resp = 0;
switch(id){
case 0:
- new(ldigits[fNdtype[id]++]) AliITSdigitSPD(digits,tracks,hits);
- break;
+ new(ldigits[fNdtype[id]++]) AliITSdigitSPD(digits,tracks,hits);
+ break;
case 1:
- resp = (AliITSresponseSDD*)DetType(1)->GetResponseModel();
- new(ldigits[fNdtype[id]++]) AliITSdigitSDD(phys,digits,tracks,
- hits,charges,resp);
- break;
+ resp = (AliITSresponseSDD*)DetType(1)->GetResponseModel();
+ new(ldigits[fNdtype[id]++]) AliITSdigitSDD(phys,digits,tracks,
+ hits,charges,resp);
+ break;
case 2:
- new(ldigits[fNdtype[id]++]) AliITSdigitSSD(digits,tracks,hits);
- break;
+ new(ldigits[fNdtype[id]++]) AliITSdigitSSD(digits,tracks,hits);
+ break;
} // end switch id
}
-
//______________________________________________________________________
-void AliITS::Digits2Raw()
-{
-// convert digits of the current event to raw data
+void AliITS::Digits2Raw(){
+ // convert digits of the current event to raw data
fLoader->LoadDigits();
TTree* digits = fLoader->TreeD();
if (!digits) {
- Error("Digits2Raw", "no digits tree");
- return;
+ Error("Digits2Raw", "no digits tree");
+ return;
}
SetTreeAddressD(digits);
AliITSLoader *pITSLoader = (AliITSLoader*)fLoader;
if (pITSLoader == 0x0) {
- Error("MakeTreeC","fLoader == 0x0 option=%s",option);
- return;
+ Error("MakeTreeC","fLoader == 0x0 option=%s",option);
+ return;
}
if (pITSLoader->TreeC() == 0x0) pITSLoader->MakeTree("C");
MakeBranchC();
}
+//----------------------------------------------------------------------
+void AliITS::MakeBranchC(){
+ //Makes barnches in treeC
+ AliITSLoader *pITSLoader = (AliITSLoader*)fLoader;
+ if (pITSLoader == 0x0) {
+ Error("MakeTreeC","fLoader == 0x0");
+ return;
+ }
+ TTree * lTC = pITSLoader->TreeC();
+ if (lTC == 0x0){
+ Error("MakeTreeC","Can not get TreeC from Loader");
+ return;
+ }
-void AliITS::MakeBranchC()
-{
-//Makes barnches in treeC
- AliITSLoader *pITSLoader = (AliITSLoader*)fLoader;
- if (pITSLoader == 0x0)
- {
- Error("MakeTreeC","fLoader == 0x0");
- return;
- }
- TTree * lTC = pITSLoader->TreeC();
- if (lTC == 0x0)
- {
- Error("MakeTreeC","Can not get TreeC from Loader");
- return;
- }
-
- Int_t buffersize = 4000;
- char branchname[30];
- const char *det[3] = {"SPD","SDD","SSD"};
- char digclass[40];
- char clclass[40];
-
+ Int_t buffersize = 4000;
+ char branchname[30];
+ const char *det[3] = {"SPD","SDD","SSD"};
+ char digclass[40];
+ char clclass[40];
+
// one branch for Clusters per type of detector
- Int_t i;
- for (i=0; i<kNTYPES ;i++)
- {
+ Int_t i;
+ for (i=0; i<kNTYPES ;i++) {
AliITSDetType *iDetType=DetType(i);
iDetType->GetClassNames(digclass,clclass);
// clusters
if (fCtype == 0x0) fCtype = new TObjArray(fNDetTypes);
- if(!ClustersAddress(i))
- {
- fCtype->AddAt(new TClonesArray(clclass,1000),i);
- }
+ if(!ClustersAddress(i)){
+ fCtype->AddAt(new TClonesArray(clclass,1000),i);
+ }
if (kNTYPES==3) sprintf(branchname,"%sClusters%s",GetName(),det[i]);
else sprintf(branchname,"%sClusters%d",GetName(),i+1);
- if (fCtype && lTC)
- {
- if (lTC->GetBranch(branchname))
- {
- Warning("MakeBranchC","Branch %s alread exists in TreeC",branchname);
+ if (fCtype && lTC) {
+ if (lTC->GetBranch(branchname)){
+ Warning("MakeBranchC","Branch %s alread exists in TreeC",
+ branchname);
+ }else{
+ Info("MakeBranchC","Creating branch %s in TreeC",branchname);
+ lTC->Branch(branchname,&((*fCtype)[i]), buffersize);
}
- else
- {
- Info("MakeBranchC","Creating branch %s in TreeC",branchname);
- lTC->Branch(branchname,&((*fCtype)[i]), buffersize);
- }
- } // end if fCtype && lTC
- } // end for i
+ } // end if fCtype && lTC
+ } // end for i
}
-
//______________________________________________________________________
void AliITS::GetTreeC(Int_t event){
- // Get the clusters tree for this event and set the branch address.
- // Inputs:
- // Int_t event Event number for the cluster tree.
- // Outputs:
- // none.
- // Return:
- // none.
- char branchname[30];
- const char *det[3] = {"SPD","SDD","SSD"};
-
- AliITSLoader *pITSLoader = (AliITSLoader*)fLoader;
- TTree * lTC = pITSLoader->TreeC();
+ // Get the clusters tree for this event and set the branch address.
+ // Inputs:
+ // Int_t event Event number for the cluster tree.
+ // Outputs:
+ // none.
+ // Return:
+ // none.
+ char branchname[30];
+ const char *det[3] = {"SPD","SDD","SSD"};
- ResetClusters();
- if (lTC) {
- pITSLoader->CleanRawClusters();
- } // end if TreeC()
+ AliITSLoader *pITSLoader = (AliITSLoader*)fLoader;
+ TTree * lTC = pITSLoader->TreeC();
+ ResetClusters();
+ if (lTC) {
+ pITSLoader->CleanRawClusters();
+ } // end if TreeC()
- TBranch *branch;
+ TBranch *branch;
- if (lTC) {
- Int_t i;
+ if (lTC) {
+ Int_t i;
char digclass[40];
char clclass[40];
for (i=0; i<kNTYPES; i++) {
- AliITSDetType *iDetType=DetType(i);
- iDetType->GetClassNames(digclass,clclass);
- // clusters
- if (fCtype == 0x0) fCtype = new TObjArray(fNDetTypes);
- if(!fCtype->At(i)) fCtype->AddAt(new TClonesArray(clclass,1000),i);
- if(kNTYPES==3) sprintf(branchname,"%sClusters%s",GetName(),det[i]);
- else sprintf(branchname,"%sClusters%d",GetName(),i+1);
- if (fCtype) {
+ AliITSDetType *iDetType=DetType(i);
+ iDetType->GetClassNames(digclass,clclass);
+ // clusters
+ if (fCtype == 0x0) fCtype = new TObjArray(fNDetTypes);
+ if(!fCtype->At(i)) fCtype->AddAt(new TClonesArray(clclass,1000),i);
+ if(kNTYPES==3) sprintf(branchname,"%sClusters%s",GetName(),det[i]);
+ else sprintf(branchname,"%sClusters%d",GetName(),i+1);
+ if (fCtype) {
branch = lTC->GetBranch(branchname);
- if (branch) branch->SetAddress(&((*fCtype)[i]));
- } // end if fCtype
+ if (branch) branch->SetAddress(&((*fCtype)[i]));
+ } // end if fCtype
} // end for i
- } else {
+ } else {
Error("GetTreeC","cannot find Clusters Tree for event:%d",event);
- } // end if lTC
+ } // end if lTC
}
//______________________________________________________________________
void AliITS::AddCluster(Int_t id, AliITSRawCluster *c){
} // end switch id
}
//______________________________________________________________________
-void AliITS::ResetClusters(){
- // Reset number of clusters and the clusters array for ITS.
- // Inputs:
- // none.
- // Outputs:
- // none.
-
- Int_t i;
- for (i=0;i<kNTYPES;i++ ) ResetClusters(i);
-}
-//______________________________________________________________________
void AliITS::ResetClusters(Int_t i){
// Reset number of clusters and the clusters array for this branch.
// Inputs:
// only one branch for rec points for all detector types
Bool_t oFast= (strstr(opt,"Fast")!=0);
if(oFast){
- sprintf(branchname,"%sRecPointsF",GetName());
+ sprintf(branchname,"%sRecPointsF",GetName());
} else {
- sprintf(branchname,"%sRecPoints",GetName());
+ sprintf(branchname,"%sRecPoints",GetName());
}
-
-
+
if(!fRecPoints)fRecPoints = new TClonesArray("AliITSRecPoint",1000);
if (fLoader->TreeR()) {
- if (fRecPoints == 0x0) fRecPoints = new TClonesArray("AliITSRecPoint",1000);
+ if(fRecPoints==0x0) fRecPoints = new TClonesArray("AliITSRecPoint",
+ 1000);
MakeBranchInTree(fLoader->TreeR(),branchname,&fRecPoints,buffsz,file);
} // end if
}
char branchname[30];
if(!treeR) return;
- if (fRecPoints == 0x0) fRecPoints = new TClonesArray("AliITSRecPoint",1000);
+ if(fRecPoints==0x0) fRecPoints = new TClonesArray("AliITSRecPoint",1000);
TBranch *branch;
sprintf(branchname,"%sRecPoints",GetName());
branch = treeR->GetBranch(branchname);
if (branch) {
- branch->SetAddress(&fRecPoints);
- }
- else {
- sprintf(branchname,"%sRecPointsF",GetName());
- branch = treeR->GetBranch(branchname);
- if (branch) {
branch->SetAddress(&fRecPoints);
- }
+ }else {
+ sprintf(branchname,"%sRecPointsF",GetName());
+ branch = treeR->GetBranch(branchname);
+ if (branch) {
+ branch->SetAddress(&fRecPoints);
+ }
}
}
//______________________________________________________________________
}
//______________________________________________________________________
void AliITS::HitsToFastRecPoints(Int_t evNumber,Int_t bgrev,Int_t size,
- Option_t *opt0,Option_t *opt1, const char *flnm){
+ Option_t *opt0,Option_t *opt1,
+ const char *flnm){
// keep galice.root for signal and name differently the file for
// background when add! otherwise the track info for signal will be lost !
// the condition below will disappear when the geom class will be
//m.b. : this change is nothing but a nice way to make sure
//the CPU goes up !
- cout<<"HitsToFastRecPoints: N mod = "<<geom->GetIndexMax()<<endl;
-
+ if(GetDebug()) cout<<"HitsToFastRecPoints: N mod = "<<
+ geom->GetIndexMax()<<endl;
for(module=0;module<geom->GetIndexMax();module++){
id = geom->GetModuleType(module);
if (!all && !det[id]) continue;
iDetType = DetType(id);
sim = (AliITSsimulation*)iDetType->GetSimulationModel();
- if (!sim)
- {
- Error("HitsToFastPoints","The simulation class was not "
- "instanciated for module %d type %x!",module,
- geom->GetModuleTypeName(module));
- exit(1);
- } // end if !sim
+ if (!sim) {
+ Error("HitsToFastPoints","The simulation class was not "
+ "instanciated for module %d type %x!",module,
+ geom->GetModuleTypeName(module));
+ exit(1);
+ } // end if !sim
mod = (AliITSmodule *)fITSmodules->At(module);
sim->CreateFastRecPoints(mod,module,gRandom);
cout<<module<<"\r";fflush(0);
//gAlice->TreeR()->Fill();
- TTree *lTR = pITSloader->TreeR();
+ TTree *lTR = pITSloader->TreeR();
TBranch *br=lTR->GetBranch("ITSRecPointsF");
br->Fill();
ResetRecPoints();
} // end for module
ClearModules();
-
fLoader->WriteRecPoints("OVERWRITE");
}
//______________________________________________________________________
-void AliITS::Digits2Reco(){
- // Find clusters and reconstruct space points.
- // Inputs:
- // none.
- // Outputs:
- // none.
-
- AliHeader *header=fLoader->GetRunLoader()->GetHeader();
- // to Digits to RecPoints for event in file, all digits in file, and
- // all ITS detectors.
- DigitsToRecPoints(header->GetEvent(),0,fOpt);
-}
-//______________________________________________________________________
void AliITS::DigitsToRecPoints(Int_t evNumber,Int_t lastentry,Option_t *opt){
// cluster finding and reconstruction of space points
// the condition below will disappear when the geom class will be
rec = (AliITSClusterFinder*)iDetType->GetReconstructionModel();
TClonesArray *itsDigits = this->DigitsAddress(id);
if (!rec) {
- Error("DigitsToRecPoints",
- "The reconstruction class was not instanciated! event=%d",
- evNumber);
- exit(1);
+ Error("DigitsToRecPoints",
+ "The reconstruction class was not instanciated! event=%d",
+ evNumber);
+ exit(1);
} // end if !rec
this->ResetDigits();
TTree *lTD = pITSloader->TreeD();
if (all) {
- lTD->GetEvent(lastentry+module);
+ lTD->GetEvent(lastentry+module);
}else {
- lTD->GetEvent(lastentry+(module-first));
+ lTD->GetEvent(lastentry+(module-first));
}
Int_t ndigits = itsDigits->GetEntriesFast();
- if (ndigits) rec->FindRawClusters(module);
+ if(ndigits>0){
+ rec->SetDigits(DigitsAddress(id));
+ rec->SetClusters(ClustersAddress(id));
+ rec->FindRawClusters(module);
+ } // end if
pITSloader->TreeR()->Fill();
ResetRecPoints();
treeC->Fill();
ResetClusters();
} // end for module
-
pITSloader->WriteRecPoints("OVERWRITE");
pITSloader->WriteRawClusters("OVERWRITE");
}
//______________________________________________________________________
-void AliITS::ResetRecPoints(){
- // Reset number of rec points and the rec points array.
- // Inputs:
- // none.
- // Outputs:
- // none.
-
- if (fRecPoints) fRecPoints->Clear();
- fNRecPoints = 0;
+AliLoader* AliITS::MakeLoader(const char* topfoldername){
+ //builds ITSgetter (AliLoader type)
+ //if detector wants to use castomized getter, it must overload this method
+
+ Info("MakeLoader","Creating AliITSLoader. Top folder is %s.",
+ topfoldername);
+ fLoader = new AliITSLoader(GetName(),topfoldername);
+ return fLoader;
}
-//______________________________________________________________________
-AliLoader* AliITS::MakeLoader(const char* topfoldername)
-{
- //builds ITSgetter (AliLoader type)
- //if detector wants to use castomized getter, it must overload this method
-
- Info("MakeLoader","Creating AliITSLoader. Top folder is %s.",topfoldername);
- fLoader = new AliITSLoader(GetName(),topfoldername);
- return fLoader;
-}
-