#include "AliGenEventHeader.h"
#include "AliRun.h"
#include "AliPDG.h"
+#include "AliLoader.h"
+#include "AliRunLoader.h"
+#include "AliSTARTLoader.h"
#include <stdlib.h>
#include <Riostream.h>
//---------------------------------------------------------------------
-void AliSTARTDigitizer::Exec(Option_t* option)
+void AliSTARTDigitizer::Exec(Option_t* /*option*/)
{
- cout<<" AliSTARTDigitizer::Exec"<<endl;
+
+ AliRunLoader *inRL, *outRL;//in and out Run Loaders
+ AliLoader *ingime, *outgime;// in and out ITSLoaders
+
+ outRL = AliRunLoader::GetRunLoader(fManager->GetOutputFolderName());
+ outgime = outRL->GetLoader("STARTLoader");
+
#ifdef DEBUG
cout<<"AliSTARTDigitizer::>SDigits2Digits start...\n";
#endif
Int_t hit, nhits;
Int_t CountEr[13],CountEl[13]; //!!!
Int_t volume,pmt,tr,tl,sumRight;
- char nameDigits[20];
Float_t timediff,timeav;
Float_t besttimeright,besttimeleft,meanTime;
Int_t bestRightADC,bestLeftADC;
fRightADC = new TArrayI(12);
fLeftADC = new TArrayI(12);
-
- fHits = new TClonesArray ("AliSTARThit", 1000);
+ inRL = AliRunLoader::GetRunLoader(fManager->GetInputFolderName(0));
+ inRL->LoadgAlice();
+
+ // fHits = new TClonesArray ("AliSTARThit", 1000);
fPhotons = new TClonesArray ("AliSTARThitPhoton", 10000); //!!!
AliSTART *START = (AliSTART*) gAlice->GetDetector("START");
-
AliSTARThit *startHit;
- AliSTARThitPhoton *startHitPhoton; //!!!
+ //use if Cherenkov photons
+ // AliSTARThitPhoton *startHitPhoton; //!!!
TBranch *brHits=0;
TBranch *brHitPhoton=0;
fdigits= new AliSTARTdigit();
Int_t nFiles=fManager->GetNinputs();
for (Int_t inputFile=0; inputFile<nFiles; inputFile++) {
-
-
besttimeright=9999.;
besttimeleft=9999.;
Int_t timeDiff=0;
timeright[i0]=0; timeleft[i0]=0;
CountEr[i0]=0; CountEl[i0]=0;
}
- TClonesArray *STARThits = START->Hits ();
- TClonesArray *STARThitsPhotons = START->Photons ();
- TTree *th = fManager->GetInputTreeH(inputFile);
+ inRL = AliRunLoader::GetRunLoader(fManager->GetInputFolderName(inputFile));
+ ingime = inRL->GetLoader("STARTLoader");
+ ingime->LoadHits("READ");//probably it is necessary to load them before
+ ingime->LoadDigits("UPDATE");//probably it is necessary to load them before
+ //use if Cherenkov photons
+ // TClonesArray *STARThitsPhotons = START->Photons ();
+ TClonesArray *fHits = START->Hits ();
+ // cout<<" Load "<<AliSTARTLoader::LoadDigits()<<endl;
+
+ TTree *th = ingime->TreeH();
brHits = th->GetBranch("START");
brHitPhoton = th->GetBranch("STARThitPhoton");
if (brHits) {
if (ntracks<=0) return;
// Start loop on tracks in the photon hits containers
// for amplitude
+ /*
if(brHitPhoton) {
+ cout<<"brHitPhoton "<<endl;
for (Int_t track=0; track<ntracks;track++) {
brHitPhoton -> GetEntry(track);;
nhits = STARThitsPhotons->GetEntriesFast();
} //hit photons
} //track photons
} // was photons
-
+ */
// Start loop on tracks in the hits containers
for (Int_t track=0; track<ntracks;track++) {
brHits->GetEntry(track);
- nhits = STARThits->GetEntriesFast();
+ nhits = fHits->GetEntriesFast();
+ // cout<<" brHits hits "<<nhits<<endl;
for (hit=0;hit<nhits;hit++) {
- startHit = (AliSTARThit*) STARThits->UncheckedAt(hit);
+ startHit = (AliSTARThit*) fHits->UncheckedAt(hit);
pmt=startHit->fPmt;
volume = startHit->fVolume;
if(volume==1){
}//time for left shoulder
} //hit loop
} //track loop
-
+
// z position
cout<<" right time "<<besttimeright<<
" right distance "<<besttimeright*30<<endl;;
cout<<" left time "<<besttimeleft<<
- " right distance "<<besttimeleft*30<<endl;;
+ " left distance "<<besttimeleft*30<<endl;;
//folding with experimental time distribution
- besttimerightGaus=gRandom->Gaus(besttimeright,0.05);
- // cout<<" besttimerightGaus "<<besttimerightGaus<<endl;
- bestRightADC=Int_t (besttimerightGaus*1000/channelWidth);
+ besttimeleftGaus=gRandom->Gaus(besttimeright,0.05);
+ cout<<" besttimeleftGaus "<<besttimeleftGaus<<endl;
+ bestLeftADC=Int_t (besttimeleftGaus*1000/channelWidth);
Float_t koef=69.7/350.;
- besttimeleft=koef*besttimeleft;
- besttimeleftGaus=gRandom->Gaus(besttimeleft,0.05);
+ besttimeright=koef*besttimeleft;
+ besttimerightGaus=gRandom->Gaus(besttimeleft,0.05);
- bestLeftADC=Int_t (besttimeleftGaus*1000/channelWidth);
+ bestRightADC=Int_t (besttimerightGaus*1000/channelWidth);
timediff=besttimerightGaus-besttimeleftGaus;
cout<<" timediff in ns "<<timediff<<" z= "<<timediff*30<<endl;
meanTime=(besttimerightGaus+besttimeleftGaus)/2.;
}
else
{timeAv=999999; timeDiff=99999;}
-
- // trick to find out output dir:
+
+// trick to find out output dir:
+
+
+/*
+ // trick to find out output dir:
TTree *outTree = fManager->GetTreeD();
if (!outTree) {
cerr<<"something wrong with output...."<<endl;
exit(111);
}
+ Char_t nameDigits[20];
TDirectory *wd = gDirectory;
outTree->GetDirectory()->cd();
- sprintf(nameDigits,"START_D_%d",fManager->GetOutputEventNr());
fdigits->Write(nameDigits);
cout<<nameDigits<<endl;
wd->cd();
+*/
+
+ Char_t nameDigits[20];
+ sprintf(nameDigits,"START_D_%d",fManager->GetOutputEventNr());
+ fdigits->Write(nameDigits);
+
+ // outgime->WriteDigits("OVERWRITE");
}
}
//------------------------------------------------------------------------
-Bool_t AliSTARTDigitizer::RegisterPhotoE(AliSTARThitPhoton *hit)
+Bool_t AliSTARTDigitizer::RegisterPhotoE(/*AliSTARThitPhoton *hit*/)
{
Double_t P = 0.2;
Double_t p;
return kTRUE;
}
+//----------------------------------------------------------------------------