#include <TRandom.h>
#include <TArrayI.h>
#include <TH1.h>
+#include <TError.h>
#include "AliSTARTDigitizer.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*/)
{
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 ();
inRL = AliRunLoader::GetRunLoader(fManager->GetInputFolderName(inputFile));
ingime = inRL->GetLoader("STARTLoader");
ingime->LoadHits("READ");//probably it is necessary to load them before
- TClonesArray *STARThitsPhotons = START->Photons ();
-
+ outgime->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();
+ 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);
- pmt=startHit->fPmt;
- volume = startHit->fVolume;
+ startHit = (AliSTARThit*) fHits->UncheckedAt(hit);
+ if (!startHit) {
+ ::Error("Exec","The unchecked hit doesn't exist");
+ break;
+ }
+ pmt=startHit->Pmt();
+ volume = startHit->Volume();
if(volume==1){
- timeright[pmt] = startHit->fTime;
+ timeright[pmt] = startHit->Time();
if(timeright[pmt]<besttimeright)
//&&CountEr[pmt-1]>thresholdAmpl)
{
} //timeright
}//time for right shoulder
if(volume==2){
- timeleft[pmt] = startHit->fTime;
+ timeleft[pmt] = startHit->Time();
if(timeleft[pmt]<besttimeleft)
//&&CountEl[pmt-1]>thresholdAmpl)
{
}//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.;
{timeAv=999999; timeDiff=99999;}
// trick to find out output dir:
- outgime->WriteDigits("OVERWRITE");
+
+ Char_t nameDigits[20];
+ sprintf(nameDigits,"START_D_%d",fManager->GetOutputEventNr());
+ TDirectory *wd = gDirectory;
+ outgime->GetDigitsDataLoader()->GetDirectory()->cd();
+ fdigits->Write(nameDigits);
+ wd->cd();
+
+ // 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;
}
+//----------------------------------------------------------------------------