#include "AliITSRecPoint.h"
#include "AliITSsegmentationSPD.h"
#include "AliITSsegmentationSDD.h"
+#include "AliITSsimulationSDD.h"
+#include "AliITSCalibrationSDD.h"
+#include "AliITSCalibrationSSD.h"
#include "AliITSsegmentationSSD.h"
#include "AliITSRawStreamSPD.h"
#include "AliITSRawStreamSSD.h"
#include "AliITSRawStreamSDD.h"
-#include "AliITSresponseSDD.h"
#include "AliRawReader.h"
#include "AliRun.h"
#include "AliLog.h"
#include "AliITSInitGeometry.h"
+#include "AliITSFOSignalsSPD.h"
ClassImp(AliITS)
//______________________________________________________________________
-AliITS::AliITS() : AliDetector(){
+AliITS::AliITS() : AliDetector(),
+fDetTypeSim(0),
+fEuclidOut(0),
+fOpt("All"),
+fIdN(0),
+fIdSens(0),
+fIdName(0),
+fITSmodules(0),
+fTiming(kFALSE),
+fSimuParam(0)
+{
// Default initializer for ITS
// The default constructor of the AliITS class. In addition to
// creating the AliITS class it zeros the variables fIshunt (a member
// fIdSens, and fIdName. The AliDetector default constructor
// is also called.
- fEuclidOut=0;
- fOpt="All";
- fIdSens=0;
- fIdName=0;
- fDetTypeSim=0;
- fIshunt = 0; // not zeroed in AliDetector.
- fHits =0;
- fNhits=0;
- fITSmodules=0;
-
// SetDetectors(); // default to fOpt="All". This variable not written out.
- SetMarkerColor(kRed);
+//PH SetMarkerColor(kRed);
+}
+//______________________________________________________________________
+AliITS::AliITS(const Char_t *title):
+ AliDetector("ITS",title),
+ fDetTypeSim(0),
+ fEuclidOut(0),
+ fOpt("All"),
+ fIdN(0),
+ fIdSens(0),
+ fIdName(0),
+ fITSmodules(0),
+ fTiming(kFALSE),
+ fSimuParam(0)
+{
+ // The standard Constructor for the ITS class.
+ // It also zeros the variables
+ // fIshunt (a member of AliDetector class), fEuclidOut, and zeros
+ // the pointers fIdSens and fIdName. To help in displaying hits via the
+ // ROOT macro display.C AliITS also sets the marker color to red. The
+ // variables passes with this constructor, const char *name and *title,
+ // are used by the constructor of AliDetector class. See AliDetector
+ // class for a description of these parameters and its constructor
+ // functions.
+ // Inputs:
+ // Char_t *title Simulation title for the ITS
+ // Outputs:
+ // none.
+ // Return:
+ // none.
+
+ fHits = new TClonesArray("AliITShit",1560); // from AliDetector
+ if(gAlice->GetMCApp()) gAlice->GetMCApp()->AddHitList(fHits);
+ //fNhits=0; //done in AliDetector(name,title)
+ SetDetectors(); // default to fOpt="All". This variable not written out.
+ fDetTypeSim = new AliITSDetTypeSim();
+ //PH SetMarkerColor(kRed);
+ if(!fLoader) MakeLoader(AliConfig::GetDefaultEventFolderName());
+ fDetTypeSim->SetLoader((AliITSLoader*)fLoader);
}
//______________________________________________________________________
-AliITS::AliITS(const char *name, const char *title):AliDetector(name,title){
+AliITS::AliITS(const char *name, const char *title):
+ AliDetector(name,title),
+ fDetTypeSim(0),
+ fEuclidOut(0),
+ fOpt("All"),
+ fIdN(0),
+ fIdSens(0),
+ fIdName(0),
+ fITSmodules(0),
+ fTiming(kFALSE),
+ fSimuParam(0)
+{
// The standard Constructor for the ITS class.
// It also zeros the variables
// fIshunt (a member of AliDetector class), fEuclidOut, and zeros
// class for a description of these parameters and its constructor
// functions.
- fEuclidOut=0;
- fOpt="All";
- fIdSens=0;
- fIdName=0;
- fDetTypeSim=0;
fHits = new TClonesArray("AliITShit",1560);
if(gAlice->GetMCApp()) gAlice->GetMCApp()->AddHitList(fHits);
- fNhits=0;
- fITSmodules = 0;
-
- fIshunt = 0; // not zeroed in AliDetector
- // Not done in AliDetector.
+ //fNhits=0; //done in AliDetector(name,title)
- fEuclidOut = 0;
SetDetectors(); // default to fOpt="All". This variable not written out.
-
- fIdName = 0;
- fIdSens = 0;
-
+
fDetTypeSim = new AliITSDetTypeSim();
-
- SetMarkerColor(kRed);
+ //PH SetMarkerColor(kRed);
if(!fLoader) MakeLoader(AliConfig::GetDefaultEventFolderName());
fDetTypeSim->SetLoader((AliITSLoader*)fLoader);
delete fDetTypeSim;
fDetTypeSim = 0;
}
-}
-//______________________________________________________________________
-AliITS::AliITS(const AliITS &source) : AliDetector(source){
- // Copy constructor. This is a function which is not allowed to be
- // done to the ITS. It exits with an error.
- // Inputs:
- // AliITS &source An AliITS class.
- // Outputs:
- // none.
- // Return:
- // none.
-
- if(this==&source) return;
- Error("Copy constructor",
- "You are not allowed to make a copy of the AliITS");
- exit(1);
-}
-//______________________________________________________________________
-AliITS& AliITS::operator=(const AliITS &source){
- // Assignment operator. This is a function which is not allowed to be
- // done to the ITS. It exits with an error.
- // Inputs:
- // AliITS &source An AliITS class.
- // Outputs:
- // none.
- // Return:
- // none.
-
- if(this==&source) return *this;
- Error("operator=","You are not allowed to make a copy of the AliITS");
- exit(1);
- return *this; //fake return
+ if(fSimuParam){
+ delete fSimuParam;
+ fSimuParam=0;
+ }
}
//______________________________________________________________________
AliDigitizer* AliITS::CreateDigitizer(AliRunDigitizer* manager)const{
// Return:
// none.
Int_t i;
-
- SetDefaults();
// Array of TStrings
if(gMC) for(i=0;i<fIdN;i++) fIdSens[i] = gMC->VolId(fIdName[i]);
- WriteGeometry();
-}
-
-//______________________________________________________________________
-void AliITS::WriteGeometry(){
-
- //Writes ITS geometry on gAlice
-
- if(!fLoader) MakeLoader(AliConfig::GetDefaultEventFolderName());
- AliRunLoader* rl = fLoader->GetRunLoader();
- rl->CdGAFile();
- AliITSgeom* geom = GetITSgeom();
- geom->Write();
-
}
-
//______________________________________________________________________
void AliITS::SetDefaults(){
// sets the default segmentation, response, digit and raw cluster classes.
// Return:
// none.
AliInfoClass("AliITS::Setting Defaults");
-
if(!fDetTypeSim) {
Error("SetDefaults()","fDetTypeSim is 0!");
return;
}
fDetTypeSim->SetDefaults();
-
+ if(fSimuParam) fDetTypeSim->SetSimuParam(fSimuParam);
}
//______________________________________________________________________
}
fDetTypeSim->SetDefaultSimulation();
+ if(fSimuParam) fDetTypeSim->SetSimuParam(fSimuParam);
}
sprintf(branchname,"%s",GetName());
if(fLoader->TreeS()){
- if(fDetTypeSim->GetSDigits()==0x0) fDetTypeSim->SetSDigits(new TClonesArray("AliITSpListItem",1000));
TClonesArray* sdig = (TClonesArray*)fDetTypeSim->GetSDigits();
MakeBranchInTree(fLoader->TreeS(),branchname,&sdig,buffersize,fl);
}
return;
}
fDetTypeSim->SetLoader((AliITSLoader*)fLoader);
+ if(fSimuParam) fDetTypeSim->SetSimuParam(fSimuParam);
MakeBranchInTreeD(fLoader->TreeD(),file);
}
Error("MakeBranchS","fDetTypeSim is 0!");
}
fDetTypeSim->SetLoader((AliITSLoader*)fLoader);
+ if(fSimuParam) fDetTypeSim->SetSimuParam(fSimuParam);
const Char_t *det[3] = {"SPD","SDD","SSD"};
- Char_t* digclass;
+ const Char_t* digclass;
Int_t buffersize = 4000;
Char_t branchname[30];
}
fDetTypeSim->SetLoader((AliITSLoader*)fLoader);
+ if(fSimuParam) fDetTypeSim->SetSimuParam(fSimuParam);
TTree *treeS = fLoader->TreeS();
TTree *treeD = fLoader->TreeD();
}
-
-
//______________________________________________________________________
void AliITS::FillModules(TTree *treeH, Int_t mask) {
// fill the modules with the sorted by module hits;
}
//______________________________________________________________________
-void AliITS::InitModules(Int_t size,Int_t &nmodules){
+Bool_t AliITS::InitModules(Int_t size,Int_t &nmodules){
// Initialize the modules array.
// Inputs:
// Int_t size Size of array of the number of modules to be
if(!fDetTypeSim) {
Error("InitModules","fDetTypeSim is null!");
- return;
+ return kFALSE;
}
+ if(fSimuParam) fDetTypeSim->SetSimuParam(fSimuParam);
Int_t nl,indexMAX,index;
if(size<=0){ // default to using data stored in AliITSgeom
if(fDetTypeSim->GetITSgeom()==0) {
Error("InitModules","fITSgeom not defined");
- return;
+ return kFALSE;
} // end if fITSgeom==0
nl = fDetTypeSim->GetITSgeom()->GetNlayers();
indexMAX = fDetTypeSim->GetITSgeom()->GetIndexMax();
nmodules = size;
} // end i size<=0
+ return kTRUE;
}
//______________________________________________________________________
void AliITS::Hits2SDigits(){
if(!fDetTypeSim) {
Error("Hits2SDigits","fDetTypeSim is null!");
- return;
-
+ return;
}
SetDefaults();
fLoader->LoadSDigits("recreate");
AliRunLoader* rl = fLoader->GetRunLoader();
fDetTypeSim->SetLoader((AliITSLoader*)fLoader);
+ if(fSimuParam) fDetTypeSim->SetSimuParam(fSimuParam);
+
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
}
fDetTypeSim->SetLoader((AliITSLoader*)fLoader);
+ if(fSimuParam) fDetTypeSim->SetSimuParam(fSimuParam);
SetDefaults();
fLoader->LoadHits("read");
return;
}
fDetTypeSim->SetLoader((AliITSLoader*)fLoader);
+ if(fSimuParam) fDetTypeSim->SetSimuParam(fSimuParam);
if(!GetITSgeom()) return; // need transformations to do digitization.
AliITSgeom *geom = GetITSgeom();
Int_t nmodules;
InitModules(size,nmodules);
FillModules(evNumber,bgrev,nmodules,option,filename);
+
+ // Reset Fast-OR signals for this event
+ fDetTypeSim->ResetFOSignals();
AliITSsimulation *sim = 0;
AliITSmodule *mod = 0;
} // end for module
ClearModules();
+
+ // Add random noise to FO signals
+ if (all || det[0]) { // SPD present
+ fDetTypeSim->ProcessNoiseForFastOr();
+ }
+
+ // Add Fast-OR signals to event (only one object per event)
+ if (all || det[0]) { // SPD present
+ fDetTypeSim->WriteFOSignals();
+ }
+
fLoader->TreeD()->GetEntries();
fLoader->TreeD()->AutoSave();
}
fDetTypeSim->SetLoader((AliITSLoader*)fLoader);
+ if(fSimuParam) fDetTypeSim->SetSimuParam(fSimuParam);
SetDefaults();
HitsToPreDigits(fLoader->GetRunLoader()->GetEventNumber(),
return;
}
fDetTypeSim->SetLoader((AliITSLoader*)fLoader);
+ if(fSimuParam) fDetTypeSim->SetSimuParam(fSimuParam);
if(!GetITSgeom()){
Error("HitsToPreDigits","fGeom is null!");
mod = (AliITSmodule *)fITSmodules->At(module);
sim->CreateFastRecPoints(mod,module,gRandom,ptarray);
lTR->Fill();
+ ptarray->Clear();
} // end for module
ClearModules();
points->Clear();
}
- Info("Hits2Clusters","Number of found fast clusters : %d",ncl);
+ AliDebug(1,Form("Number of found fast clusters : %d",ncl));
//cTree->Write();
//______________________________________________________________________
void AliITS::SDigitsToDigits(Option_t *opt){
- // Standard Summable digits to Digits function.
- // Inputs:
- // none.
- // Outputs:
- // none.
- if(!fDetTypeSim) {
- Error("SDigitsToSDigits","fDetTypeSim is 0!");
- return;
- }
-
- fDetTypeSim->SetLoader((AliITSLoader*)fLoader);
- SetDefaults();
- fDetTypeSim->SDigitsToDigits(opt,(Char_t*)GetName());
+ // Standard Summable digits to Digits function.
+ // Inputs:
+ // none.
+ // Outputs:
+ // none.
+ if (!fDetTypeSim) {
+ AliError("fDetTypeSim is 0!");
+ return;
+ }
+ const char *all = strstr(opt,"All");
+ const char *det[3] ={strstr(opt,"SPD"),strstr(opt,"SDD"),
+ strstr(opt,"SSD")};
+
+ // Reset Fast-OR signals for this event
+ fDetTypeSim->ResetFOSignals();
+
+ fDetTypeSim->SetLoader((AliITSLoader*)fLoader);
+ SetDefaults();
+ if(fSimuParam) fDetTypeSim->SetSimuParam(fSimuParam);
+ fDetTypeSim->SDigitsToDigits(opt,(Char_t*)GetName());
+
+ // Add random noise to FO signals
+ if (all || det[0]) { // SPD present
+ fDetTypeSim->ProcessNoiseForFastOr();
+ }
+ // Add Fast-OR signals to event (only one object per event)
+ if (all || det[0]) { // SPD present
+ fDetTypeSim->WriteFOSignals();
+ }
}
//______________________________________________________________________
}
fDetTypeSim->AddSumDigit(sdig);
-}
-//______________________________________________________________________
-void AliITS::AddRealDigit(Int_t branch, Int_t *digits){
- // Add a real digit - as coming from data.
- // Inputs:
- // Int_t id Detector type number.
- // Int_t *digits Integer array containing the digits info. See
- // AliITSdigit.h
- // Outputs:
- // none.
- // Return:
- // none.
-
- if(!fDetTypeSim) {
- Error("AddRealDigit","fDetTypeSim is 0!");
- return;
- }
- fDetTypeSim->AddRealDigit(branch,digits);
-
}
//______________________________________________________________________
void AliITS::AddSimDigit(Int_t branch, AliITSdigit *d){
}
//______________________________________________________________________
void AliITS::AddSimDigit(Int_t branch,Float_t phys,Int_t *digits,Int_t *tracks,
- Int_t *hits,Float_t *charges){
+ Int_t *hits,Float_t *charges, Int_t sigexpanded){
// Add a simulated digit to the list.
// Inputs:
// Int_t id Detector type number.
Error("AddSimDigit","fDetTypeSim is 0!");
return;
}
- fDetTypeSim->AddSimDigit(branch,phys,digits,tracks,hits,charges);
+ fDetTypeSim->AddSimDigit(branch,phys,digits,tracks,hits,charges,sigexpanded);
}
//______________________________________________________________________
}
fDetTypeSim->SetLoader((AliITSLoader*)fLoader);
SetDefaults();
+ if(fSimuParam) fDetTypeSim->SetSimuParam(fSimuParam);
fDetTypeSim->GetLoader()->LoadDigits();
TTree* digits = fDetTypeSim->GetLoader()->TreeD();
if (!digits) {
return;
}
fDetTypeSim->SetTreeAddressD(digits,(Char_t*)GetName());
-
+
+ // Get the FO signals for this event
+ AliITSFOSignalsSPD* foSignals = NULL;
+ AliRunLoader* runLoader = AliRunLoader::Instance();
+ AliITSLoader* itsLoader = (AliITSLoader*) runLoader->GetLoader("ITSLoader");
+ if (!itsLoader) {
+ AliError("ITS loader is NULL.");
+ }
+ else {
+ if(!itsLoader->TreeD()) AliError(" !!! No TreeD available !!!");
+ foSignals = (AliITSFOSignalsSPD*)itsLoader->TreeD()->GetUserInfo()->FindObject("AliITSFOSignalsSPD");
+ if(!foSignals) AliError("FO signals not retrieved");
+ }
+
+ Bool_t deleteFOsignalsLater = kFALSE;
+ if (!foSignals) {
+ AliError("FO signals not available. No FO bits will be written.");
+ foSignals = new AliITSFOSignalsSPD(); // make a temporary dummy signals object
+ deleteFOsignalsLater = kTRUE;
+ }
+
+
+ AliITSDDLModuleMapSDD* ddlsdd=fDetTypeSim->GetDDLModuleMapSDD();
+ Char_t rawSDD=fDetTypeSim->GetSimuParam()->GetSDDRawDataFormat();
AliITSDDLRawData rawWriter;
+
+ rawWriter.SetSDDRawFormat(rawSDD);
//Verbose level
// 0: Silent
// 1: cout messages
rawWriter.SetVerbose(0);
//SILICON PIXEL DETECTOR
- Info("Digits2Raw", "Formatting raw data for SPD");
- rawWriter.RawDataSPD(digits->GetBranch("ITSDigitsSPD"));
+ AliDebug(1,"Formatting raw data for SPD");
+ rawWriter.RawDataSPD(digits->GetBranch("ITSDigitsSPD"),foSignals);
+ if(deleteFOsignalsLater) delete foSignals;
//SILICON DRIFT DETECTOR
- Info("Digits2Raw", "Formatting raw data for SDD");
- rawWriter.RawDataSDD(digits->GetBranch("ITSDigitsSDD"));
+ AliDebug(1,Form("Formatting raw data for SDD - Format code =%d",rawSDD));
+ rawWriter.RawDataSDD(digits->GetBranch("ITSDigitsSDD"),ddlsdd);
//SILICON STRIP DETECTOR
- Info("Digits2Raw", "Formatting raw data for SSD");
+ AliDebug(1,"Formatting raw data for SSD");
rawWriter.RawDataSSD(digits->GetBranch("ITSDigitsSSD"));
fLoader->UnloadDigits();
//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);
+ AliDebug(1,Form("Creating AliITSLoader. Top folder is %s.",
+ topfoldername));
fLoader = new AliITSLoader(GetName(),topfoldername);
return fLoader;
}
-
+//______________________________________________________________________
Bool_t AliITS::Raw2SDigits(AliRawReader* rawReader)
{
//
TClonesArray** modA = new TClonesArray*[size];
for (Int_t mod = 0; mod < size; mod++) modA[mod] = new TClonesArray("AliITSpListItem", 10000);
- AliLoader* loader = (gAlice->GetRunLoader())->GetLoader("ITSLoader");
- if (!loader)
- {
+ AliLoader* loader = (AliRunLoader::Instance())->GetLoader("ITSLoader");
+ if (!loader){
Error("Open","Can not get ITS loader from Run Loader");
return kFALSE;
}
TTree* tree = 0;
tree = loader->TreeS();
- if (!tree)
- {
+ if (!tree){
loader->MakeTree("S");
tree = loader->TreeS();
}
// SPD
//
AliITSsegmentationSPD* segSPD = (AliITSsegmentationSPD*) fDetTypeSim->GetSegmentationModel(0);
+ if(!segSPD){
+ AliWarning("Set AliITS defaults");
+ SetDefaults();
+ segSPD = (AliITSsegmentationSPD*) fDetTypeSim->GetSegmentationModel(0);
+ }
npx = segSPD->Npx();
Double_t thr, sigma;
last = (modA[module])->GetEntries();
TClonesArray& dum = *modA[module];
- fDetTypeSim->GetCalibrationModel(module)->Thresholds(thr,sigma);
+ fDetTypeSim->GetSimuParam()->SPDThresholds(module,thr,sigma);
thr += 1.;
new (dum[last]) AliITSpListItem(-1, -1, module, index, thr);
}
//
AliITSsegmentationSDD* segSDD = (AliITSsegmentationSDD*) fDetTypeSim->GetSegmentationModel(1);
npx = segSDD->Npx();
- AliITSRawStreamSDD inputSDD(rawReader);
- while(1){
- Bool_t next = inputSDD.Next();
- if (!next) break;
-
- Int_t module = inputSDD.GetModuleID();
- Int_t anode = inputSDD.GetAnode();
- Int_t time = inputSDD.GetTime();
- Int_t signal = inputSDD.GetSignal();
- Int_t index = npx * anode + time;
+ Int_t scalef=AliITSsimulationSDD::ScaleFourier(segSDD);
+ Int_t firstSDD=AliITSgeomTGeo::GetModuleIndex(3,1,1);
+ Int_t firstSSD=AliITSgeomTGeo::GetModuleIndex(5,1,1);
+
+ AliITSRawStream* inputSDD=AliITSRawStreamSDD::CreateRawStreamSDD(rawReader);
+ for(Int_t iMod=firstSDD; iMod<firstSSD; iMod++){
+ AliITSCalibrationSDD* cal = (AliITSCalibrationSDD*)fDetTypeSim->GetCalibrationModel(iMod);
+ Bool_t isZeroSupp=cal->GetZeroSupp();
+ if(isZeroSupp){
+ for(Int_t iSid=0; iSid<2; iSid++) inputSDD->SetZeroSuppLowThreshold(iMod-firstSDD,iSid,cal->GetZSLowThreshold(iSid));
+ }else{
+ for(Int_t iSid=0; iSid<2; iSid++) inputSDD->SetZeroSuppLowThreshold(iMod-firstSDD,iSid,0);
+ }
+ }
- if (module >= size) continue;
- // 8bit -> 10 bit
- AliITSresponseSDD *resSDD = (AliITSresponseSDD*) fDetTypeSim->GetResponse(1);
- Int_t signal10 = resSDD->Convert8to10(signal); // signal is a 8 bit value (if the compression is active)
-
- last = modA[module]->GetEntries();
- TClonesArray& dum = *modA[module];
- new (dum[last]) AliITSpListItem(-1, -1, module, index, Double_t(signal10));
- ((AliITSpListItem*) dum.At(last))->AddSignalAfterElect(module, index, Double_t(signal10));
-
+ AliITSDDLModuleMapSDD* ddlmap=fDetTypeSim->GetDDLModuleMapSDD();
+ inputSDD->SetDDLModuleMap(ddlmap);
+ while(inputSDD->Next()){
+ if(inputSDD->IsCompletedModule()==kFALSE &&
+ inputSDD->IsCompletedDDL()==kFALSE){
+
+ Int_t module = inputSDD->GetModuleID();
+ Int_t anode = inputSDD->GetCoord1()+segSDD->NpzHalf()*inputSDD->GetChannel();
+ Int_t time = inputSDD->GetCoord2();
+ Int_t signal10 = inputSDD->GetSignal();
+ Int_t index = AliITSpList::GetIndex(anode,time,scalef*npx);
+
+ if (module >= size) continue;
+ last = modA[module]->GetEntries();
+ TClonesArray& dum = *modA[module];
+ new (dum[last]) AliITSpListItem(-1, -1, module, index, Double_t(signal10));
+ ((AliITSpListItem*) dum.At(last))->AddSignalAfterElect(module, index, Double_t(signal10));
+ }
}
+ delete inputSDD;
rawReader->Reset();
-
+
//
// SSD
//
new (dum[last]) AliITSpListItem(-1, -1, module, index, Double_t(signal));
}
rawReader->Reset();
- AliITSpListItem* sdig = 0;
+ AliITSpListItem* sdig = 0;
+ Int_t firstssd = GetITSgeom()->GetStartDet(kSSD);
+ Double_t adcToEv = 1.;
for (Int_t mod = 0; mod < size; mod++)
- {
- Int_t nsdig = modA[mod]->GetEntries();
- for (Int_t ie = 0; ie < nsdig; ie++) {
- sdig = (AliITSpListItem*) (modA[mod]->At(ie));
- new (aSDigits[ie]) AliITSpListItem(-1, -1, mod, sdig->GetIndex(), sdig->GetSignal());
+ {
+ if(mod>=firstssd) {
+ AliITSCalibrationSSD* calssd = (AliITSCalibrationSSD*)fDetTypeSim->GetCalibrationModel(mod);
+ adcToEv = 1./calssd->GetSSDDEvToADC(1.);
+ }
+ Int_t nsdig = modA[mod]->GetEntries();
+ for (Int_t ie = 0; ie < nsdig; ie++) {
+ sdig = (AliITSpListItem*) (modA[mod]->At(ie));
+ Int_t digsig = sdig->GetSignal();
+ if(mod>=firstssd) digsig*=adcToEv; // for SSD: convert back charge from ADC to electron
+ new (aSDigits[ie]) AliITSpListItem(-1, -1, mod, sdig->GetIndex(), digsig);
Float_t sig = sdig->GetSignalAfterElect();
+ if(mod>=firstssd) sig*=adcToEv;
if (sig > 0.) {
sdig = (AliITSpListItem*)aSDigits[ie];
sdig->AddSignalAfterElect(mod, sdig->GetIndex(), Double_t(sig));
//______________________________________________________________________
void AliITS::UpdateInternalGeometry(){
- Info("UpdateInternalGeometry", "Delete ITSgeom and create a new one reading TGeo");
- AliITSInitGeometry *initgeom = new AliITSInitGeometry("AliITSvPPRasymmFMD",2);
- AliITSgeom* geom = initgeom->CreateAliITSgeom();
- SetITSgeom(geom);
-
- if(!fLoader) MakeLoader(AliConfig::GetDefaultEventFolderName());
- AliRunLoader* rl = fLoader->GetRunLoader();
- rl->CdGAFile();
- geom->Write(0,kOverwrite);
+ //reads new geometry from TGeo
+// AliDebug(1,"Delete ITSgeom and create a new one reading TGeo");
+ AliITSVersion_t version = (AliITSVersion_t)IsVersion();
+ Int_t minor = 0;
+ if(version==kvPPRasymmFMD) minor=2; // default minor version for this geom.
+ AliITSInitGeometry initgeom;
+ AliITSgeom* geom = initgeom.CreateAliITSgeom(version,minor);
+ SetITSgeom(geom);
+}
+//______________________________________________________________________
+AliTriggerDetector* AliITS::CreateTriggerDetector() const {
+ // create an AliITSTrigger object (and set trigger conditions as input)
+ return new AliITSTrigger(fDetTypeSim->GetTriggerConditions());
}
-