+
/**************************************************************************
* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* *
// --- AliRoot header files ---
-#include "AliEMCALGetter.h"
+#include "AliRunLoader.h"
+#include "AliRun.h"
+#include "AliEMCALLoader.h"
#include "AliEMCALClusterizerv1.h"
#include "AliEMCALRecPoint.h"
#include "AliEMCALDigit.h"
#include "AliEMCALGeometry.h"
ClassImp(AliEMCALClusterizerv1)
-
+
+Int_t addOn[20][60][60];
+
//____________________________________________________________________________
AliEMCALClusterizerv1::AliEMCALClusterizerv1() : AliEMCALClusterizer()
{
// default ctor (to be used mainly by Streamer)
InitParameters() ;
- fDefaultInit = kTRUE ;
+ fDefaultInit = kTRUE ;
+ for(Int_t is=0;is<20;is++){
+ for(Int_t i=0;i<60;i++){
+ for(Int_t j=0;j<60;j++){
+ addOn[is][i][j]=0;
+ }
+ }
+ }
+//PH cout<<"file to read 1"<<endl;
+ ReadFile();
+//PH cout<<"file read 1"<<endl;
}
//____________________________________________________________________________
InitParameters() ;
Init() ;
fDefaultInit = kFALSE ;
+ for(Int_t is=0;is<20;is++){
+ for(Int_t i=0;i<60;i++){
+ for(Int_t j=0;j<60;j++){
+ addOn[is][i][j]=0;
+ }
+ }
+ }
+//PH cout<<"file to read 2"<<endl;
+ ReadFile();
+//PH cout<<"file read 2"<<endl;
}
if(strstr(option,"print"))
Print("") ;
- AliEMCALGetter * gime = AliEMCALGetter::Instance(GetTitle()) ;
+ //AliEMCALGetter * gime = AliEMCALGetter::Instance() ;
+ AliRunLoader *rl = AliRunLoader::GetRunLoader();
+ AliEMCALLoader *emcalLoader = dynamic_cast<AliEMCALLoader*>(rl->GetDetectorLoader("EMCAL"));
if (fLastEvent == -1)
- fLastEvent = gime->MaxEvent() - 1;
-
+ fLastEvent = rl->GetNumberOfEvents() - 1;
Int_t nEvents = fLastEvent - fFirstEvent + 1;
Int_t ievent ;
+ rl->LoadDigits("EMCAL");
for (ievent = fFirstEvent; ievent <= fLastEvent; ievent++) {
- gime->Event(ievent,"D") ;
-
+ rl->GetEvent(ievent);
GetCalibrationParameters() ;
fNumberOfECAClusters = 0;
PrintRecPoints(option) ;
//increment the total number of recpoints per run
- fRecPointsInRun += gime->ECARecPoints()->GetEntriesFast() ;
+ fRecPointsInRun += emcalLoader->RecPoints()->GetEntriesFast() ;
}
Unload();
printf("Exec took %f seconds for Clusterizing %f seconds per event",
gBenchmark->GetCpuTime("EMCALClusterizer"), gBenchmark->GetCpuTime("EMCALClusterizer")/nEvents ) ;
}
+
+ SaveHists();
+
}
//____________________________________________________________________________
// The initial values for fitting procedure are set equal to the positions of local maxima.
// Cluster will be fitted as a superposition of nPar/3 electromagnetic showers
+ AliEMCALLoader *emcalLoader = dynamic_cast<AliEMCALLoader*>(AliRunLoader::GetRunLoader()->GetDetectorLoader("EMCAL"));
+ TClonesArray *digits = emcalLoader->Digits();
+ /*
AliEMCALGetter * gime = AliEMCALGetter::Instance() ;
TClonesArray * digits = gime->Digits() ;
-
+ */
+
gMinuit->mncler(); // Reset Minuit's list of paramters
gMinuit->SetPrintLevel(-1) ; // No Printout
gMinuit->SetFCN(AliEMCALClusterizerv1::UnfoldingChiSquare) ;
Int_t iDigit ;
- AliEMCALGeometry * geom = gime->EMCALGeometry() ;
+ AliEMCALGeometry * geom = AliEMCALGeometry::GetInstance(); //gime->EMCALGeometry() ;
for(iDigit = 0; iDigit < nDigits; iDigit++){
digit = maxAt[iDigit];
void AliEMCALClusterizerv1::GetCalibrationParameters()
{
// Gets the parameters for the calibration from the digitizer
- AliEMCALGetter * gime = AliEMCALGetter::Instance() ;
+ //AliEMCALGetter * gime = AliEMCALGetter::Instance() ;
+ AliEMCALLoader *emcalLoader = dynamic_cast<AliEMCALLoader*>(AliRunLoader::GetRunLoader()->GetDetectorLoader("EMCAL"));
- if ( !gime->Digitizer() )
- gime->LoadDigitizer();
- AliEMCALDigitizer * dig = gime->Digitizer();
+ if ( !emcalLoader->Digitizer() )
+ emcalLoader->LoadDigitizer();
+ AliEMCALDigitizer * dig = dynamic_cast<AliEMCALDigitizer*>(emcalLoader->Digitizer());
fADCchannelECA = dig->GetECAchannel() ;
fADCpedestalECA = dig->GetECApedestal();
+//PH cout<<"ChannelECA, peds "<<fADCchannelECA<<" "<<fADCpedestalECA<<endl;
}
//____________________________________________________________________________
// Make all memory allocations which can not be done in default constructor.
// Attach the Clusterizer task to the list of EMCAL tasks
- AliEMCALGetter * gime = AliEMCALGetter::Instance(GetTitle(), fEventFolderName.Data());
-
- AliEMCALGeometry * geom = gime->EMCALGeometry() ;
+ //AliEMCALGeometry * geom = AliEMCALGeometry::GetInstance() ;
+ AliRunLoader *rl = AliRunLoader::GetRunLoader();
+ AliEMCALGeometry *geom = dynamic_cast<AliEMCAL*>(rl->GetAliRun()->GetDetector("EMCAL"))->GetGeometry();
+ AliInfo(Form("geom 0x%x",geom));
- fNTowers = geom->GetNZ() * geom->GetNPhi() ;
+//Sub fNTowers = geom->GetNZ() * geom->GetNPhi() ;
+ fNTowers =400;
if(!gMinuit)
gMinuit = new TMinuit(100) ;
-
- if ( !gime->Clusterizer() )
- gime->PostClusterizer(this);
+ //Sub if ( !gime->Clusterizer() )
+ //Sub gime->PostClusterizer(this);
+ BookHists();
}
//____________________________________________________________________________
{
// Initializes the parameters for the Clusterizer
fNumberOfECAClusters = 0;
- fECAClusteringThreshold = 0.0045; // must be adjusted according to the noise leve set by digitizer
- fECALocMaxCut = 0.03 ;
+
+ fECAClusteringThreshold = 0.5; // value obtained from Alexei
+ fECALocMaxCut = 0.03;
+
fECAW0 = 4.5 ;
fTimeGate = 1.e-8 ;
fToUnfold = kFALSE ;
fRecPointsInRun = 0 ;
+ fMinECut = 0.3;
}
//____________________________________________________________________________
// The order of d1 and d2 is important: first (d1) should be a digit already in a cluster
// which is compared to a digit (d2) not yet in a cluster
- AliEMCALGeometry * geom = AliEMCALGetter::Instance()->EMCALGeometry() ;
+ //AliEMCALGeometry * geom = AliEMCALGetter::Instance()->EMCALGeometry() ;
+ AliEMCALGeometry * geom = AliEMCALGeometry::GetInstance() ;
Int_t rv = 0 ;
Int_t relid1[2] ;
- geom->AbsToRelNumbering(d1->GetId(), relid1) ;
-
- Int_t relid2[2] ;
- geom->AbsToRelNumbering(d2->GetId(), relid2) ;
+ //Sub geom->AbsToRelNumbering(d1->GetId(), relid1) ;
+ Int_t nSupMod=0;
+ Int_t nTower=0;
+ Int_t nIphi=0;
+ Int_t nIeta=0;
+ Int_t iphi=0;
+ Int_t ieta=0;
+ geom->GetCellIndex(d1->GetId(), nSupMod,nTower,nIphi,nIeta);
+ geom->GetCellPhiEtaIndexInSModule(nSupMod,nTower,nIphi,nIeta, iphi,ieta);
+ relid1[0]=ieta;
+ relid1[1]=iphi;
+
+
+ Int_t nSupMod1=0;
+ Int_t nTower1=0;
+ Int_t nIphi1=0;
+ Int_t nIeta1=0;
+ Int_t iphi1=0;
+ Int_t ieta1=0;
+ geom->GetCellIndex(d2->GetId(), nSupMod1,nTower1,nIphi1,nIeta1);
+ geom->GetCellPhiEtaIndexInSModule(nSupMod1, nTower1,nIphi1,nIeta1, iphi1,ieta1);
+ Int_t relid2[2] ;
+ relid2[0]=ieta1;
+ relid2[1]=iphi1;
+
+ //Sub geom->AbsToRelNumbering(d2->GetId(), relid2) ;
Int_t rowdiff = TMath::Abs( relid1[0] - relid2[0] ) ;
Int_t coldiff = TMath::Abs( relid1[1] - relid2[1] ) ;
if (( coldiff <= 1 ) && ( rowdiff <= 1 )){
- if(TMath::Abs(d1->GetTime() - d2->GetTime() ) < fTimeGate)
rv = 1 ;
}
else {
}
if (gDebug == 2 )
- printf("AreNeighbours: neighbours=%d, id1=%d, relid1=%d,%d \n id2=%d, relid2=%d,%d ",
+if(rv==1)printf("AreNeighbours: neighbours=%d, id1=%d, relid1=%d,%d \n id2=%d, relid2=%d,%d \n",
rv, d1->GetId(), relid1[0], relid1[1],
d2->GetId(), relid2[0], relid2[1]) ;
void AliEMCALClusterizerv1::Unload()
{
// Unloads the Digits and RecPoints
- AliEMCALGetter * gime = AliEMCALGetter::Instance() ;
- gime->EmcalLoader()->UnloadDigits() ;
- gime->EmcalLoader()->UnloadRecPoints() ;
+ AliEMCALLoader *emcalLoader = dynamic_cast<AliEMCALLoader*>(AliRunLoader::GetRunLoader()->GetDetectorLoader("EMCAL"));
+
+ emcalLoader->UnloadDigits() ;
+ emcalLoader->UnloadRecPoints() ;
}
//____________________________________________________________________________
// Creates new branches with given title
// fills and writes into TreeR.
- AliEMCALGetter *gime = AliEMCALGetter::Instance() ;
+ AliEMCALLoader *emcalLoader = dynamic_cast<AliEMCALLoader*>(AliRunLoader::GetRunLoader()->GetDetectorLoader("EMCAL"));
- TObjArray * aECARecPoints = gime->ECARecPoints() ;
+ TObjArray * aECARecPoints = emcalLoader->RecPoints() ;
- TClonesArray * digits = gime->Digits() ;
- TTree * treeR = gime->TreeR(); ;
-
+ TClonesArray * digits = emcalLoader->Digits() ;
+ TTree * treeR = emcalLoader->TreeR();
+ if ( treeR==0 ) {
+ emcalLoader->MakeRecPointsContainer();
+ treeR = emcalLoader->TreeR();
+ }
Int_t index ;
//Evaluate position, dispersion and other RecPoint properties for EC section
for(index = 0; index < aECARecPoints->GetEntries(); index++)
(dynamic_cast<AliEMCALRecPoint *>(aECARecPoints->At(index)))->SetIndexInList(index) ;
- aECARecPoints->Expand(aECARecPoints->GetEntriesFast()) ;
-
Int_t bufferSize = 32000 ;
Int_t splitlevel = 0 ;
//EC section branch
- TBranch * branchECA = treeR->Branch("EMCALECARP","TObjArray",&aECARecPoints,bufferSize,splitlevel);
- branchECA->SetTitle(BranchName());
-
- branchECA->Fill() ;
+
+ TBranch * branchECA = 0;
+ if ((branchECA = treeR->GetBranch("EMCALECARP")))
+ branchECA->SetAddress(&aECARecPoints);
+ else
+ treeR->Branch("EMCALECARP","TObjArray",&aECARecPoints,bufferSize,splitlevel);
+ treeR->Fill() ;
- gime->WriteRecPoints("OVERWRITE");
- gime->WriteClusterizer("OVERWRITE");
+ emcalLoader->WriteRecPoints("OVERWRITE");
+ //emcalLoader->WriteClusterizer("OVERWRITE");
+ emcalLoader->WriteReconstructioner("OVERWRITE");
}
//____________________________________________________________________________
{
// Steering method to construct the clusters stored in a list of Reconstructed Points
// A cluster is defined as a list of neighbour digits
-
- AliEMCALGetter * gime = AliEMCALGetter::Instance() ;
- AliEMCALGeometry * geom = gime->EMCALGeometry() ;
+ AliEMCALLoader *emcalLoader = dynamic_cast<AliEMCALLoader*>(AliRunLoader::GetRunLoader()->GetDetectorLoader("EMCAL"));
- TObjArray * aECARecPoints = gime->ECARecPoints() ;
-
- aECARecPoints->Delete() ;
+ TObjArray * aECARecPoints = emcalLoader->RecPoints() ;
+
+ AliEMCALGeometry * geom = AliEMCALGeometry::GetInstance();
+ if (geom==0)
+ AliFatal("Did not get geometry from EMCALLoader");
- TClonesArray * digits = gime->Digits() ;
+ aECARecPoints->Clear();
- TIter next(digits) ;
- AliEMCALDigit * digit ;
- Int_t ndigECA=0 ;
-
- // count the number of digits in ECA section
- while ( (digit = dynamic_cast<AliEMCALDigit *>(next())) ) { // scan over the list of digits
- if (geom->IsInECA(digit->GetId()))
- ndigECA++ ;
- else {
- Error("MakeClusters", "id = %d is a wrong ID!", digit->GetId()) ;
- abort() ;
- }
- }
+ TClonesArray * digits = emcalLoader->Digits() ;
TClonesArray * digitsC = dynamic_cast<TClonesArray*>(digits->Clone()) ;
- // Clusterization starts
-
- TIter nextdigit(digitsC) ;
-
+
+ // Clusterization starts
+ TIter nextdigit(digitsC) ;
+ AliEMCALDigit * digit;
+
+ cout << "Outer Loop" << endl;
while ( (digit = dynamic_cast<AliEMCALDigit *>(nextdigit())) ) { // scan over the list of digitsC
AliEMCALRecPoint * clu = 0 ;
- TArrayI clusterECAdigitslist(50);
-
- Bool_t inECA = kFALSE;
- if( geom->IsInECA(digit->GetId()) ) {
- inECA = kTRUE ;
- }
- if (gDebug == 2) {
- if (inECA)
- printf("MakeClusters: id = %d, ene = %f , thre = %f",
- digit->GetId(),Calibrate(digit->GetAmp()), fECAClusteringThreshold) ;
- }
- if (inECA && (Calibrate(digit->GetAmp()) > fECAClusteringThreshold ) ){
-
- Int_t iDigitInECACluster = 0;
- // Find the seed
- if( geom->IsInECA(digit->GetId()) ) {
- // start a new Tower RecPoint
- if(fNumberOfECAClusters >= aECARecPoints->GetSize())
+ TArrayI clusterECAdigitslist(50000);
+
+////////////////////////temp solution, embedding///////////////////
+ int nSupMod=0, nTower=0, nIphi=0, nIeta=0;
+ int iphi=0, ieta=0;
+ geom->GetCellIndex(digit->GetId(), nSupMod,nTower,nIphi,nIeta);
+ geom->GetCellPhiEtaIndexInSModule(nSupMod,nTower,nIphi,nIeta, iphi,ieta);
+
+ //cout << "Some checking" << endl;
+ if (geom->CheckAbsCellId(digit->GetId()) && (Calibrate(digit->GetAmp()+addOn[nSupMod-1][ieta-1][iphi-1]) > fECAClusteringThreshold ) ){
+ //if(addOn[nSupMod-1][ieta-1][iphi-1]>0)cout<<"11 digit, add "<<ieta<<" "<<iphi<<" "<<addOn[nSupMod-1][ieta-1][iphi-1]<<" "<<digit->GetAmp()<<endl;
+// cout<<"crossed the threshold "<<endl;
+ Int_t iDigitInECACluster = 0;
+ // start a new Tower RecPoint
+ if(fNumberOfECAClusters >= aECARecPoints->GetSize())
aECARecPoints->Expand(2*fNumberOfECAClusters+1) ;
- AliEMCALRecPoint * rp = new AliEMCALRecPoint("") ;
- aECARecPoints->AddAt(rp, fNumberOfECAClusters) ;
- clu = dynamic_cast<AliEMCALRecPoint *>(aECARecPoints->At(fNumberOfECAClusters)) ;
- fNumberOfECAClusters++ ;
- clu->AddDigit(*digit, Calibrate(digit->GetAmp())) ;
- clusterECAdigitslist[iDigitInECACluster] = digit->GetIndexInList() ;
- iDigitInECACluster++ ;
- digitsC->Remove(digit) ;
- if (gDebug == 2 )
- printf("MakeClusters: OK id = %d, ene = %f , thre = %f ", digit->GetId(),Calibrate(digit->GetAmp()), fECAClusteringThreshold) ;
-
- }
+ AliEMCALRecPoint * rp = new AliEMCALRecPoint("") ;
+ //rp->SetGeom(geom);
+ aECARecPoints->AddAt(rp, fNumberOfECAClusters) ;
+ clu = dynamic_cast<AliEMCALRecPoint *>(aECARecPoints->At(fNumberOfECAClusters)) ;
+ fNumberOfECAClusters++ ;
+ clu->AddDigit(*digit, Calibrate(digit->GetAmp()+addOn[nSupMod-1][ieta-1][iphi-1])) ;
+ clusterECAdigitslist[iDigitInECACluster] = digit->GetIndexInList() ;
+ iDigitInECACluster++ ;
+// cout<<" 1st setp:cluno, digNo "<<fNumberOfECAClusters<<" "<<iDigitInECACluster<<endl;
+ digitsC->Remove(digit) ;
+ AliDebug(1,Form("MakeClusters: OK id = %d, ene = %f , thre = %f \n", digit->GetId(),Calibrate(digit->GetAmp()), fECAClusteringThreshold));
nextdigit.Reset() ;
AliEMCALDigit * digitN ;
Int_t index = 0 ;
- // Do the Clustering
-
+ // Find the neighbours
while (index < iDigitInECACluster){ // scan over digits already in cluster
- digit = (AliEMCALDigit*)digits->At(clusterECAdigitslist[index]) ;
+ digit = (AliEMCALDigit*)digits->At(clusterECAdigitslist[index]);
index++ ;
- while ( (digitN = (AliEMCALDigit *)nextdigit()) ) { // scan over the reduced list of digits
+ while ( (digitN = (AliEMCALDigit *)nextdigit())) { // scan over the reduced list of digits
+ // cout<<"we have new digit "<<endl;
+ // check that the digit is above the min E Cut
+ geom->GetCellIndex(digitN->GetId(), nSupMod,nTower,nIphi,nIeta);
+ geom->GetCellPhiEtaIndexInSModule(nSupMod,nTower,nIphi,nIeta, iphi,ieta);
+ if( Calibrate(digitN->GetAmp()+addOn[nSupMod-1][ieta-1][iphi-1]) < fMinECut ) digitsC->Remove(digitN);
+ //cout<<" new digit above ECut "<<endl;
Int_t ineb = AreNeighbours(digit, digitN); // call (digit,digitN) in THAT oder !!!!!
+// cout<<" new digit neighbour?? "<<ineb<<endl;
switch (ineb ) {
case 0 : // not a neighbour
break ;
case 1 : // are neighbours
- clu->AddDigit(*digitN, Calibrate( digitN->GetAmp()) ) ;
+ //if(addOn[nSupMod-1][ieta-1][iphi-1]>0)cout<<"22 digit, add "<<nSupMod<<" "<<ieta<<" "<<iphi<<" "<<addOn[nSupMod-1][ieta-1][iphi-1]<<" "<<digit->GetAmp()<<endl;
+ clu->AddDigit(*digitN, Calibrate( digitN->GetAmp()+addOn[nSupMod-1][ieta-1][iphi-1]) ) ;
clusterECAdigitslist[iDigitInECACluster] = digitN->GetIndexInList() ;
iDigitInECACluster++ ;
+// cout<<"when neighbour: cluno, digNo "<<digit->GetId()<<" "<<fNumberOfECAClusters<<" "<<iDigitInECACluster<<endl;
digitsC->Remove(digitN) ;
- break ;
- case 2 : // too far from each other
- goto endofloop1;
+// break ;
+// case 2 : // too far from each other
+//Subh goto endofloop1;
+// cout<<"earlier go to end of loop"<<endl;
} // switch
-
+ //cout<<"in nextDigit loop "<<fNumberOfECAClusters<<" "<<iDigitInECACluster<<endl;
} // while digitN
-
- endofloop1: ;
+ //cout << "Done neighbout searching" << endl;
nextdigit.Reset() ;
} // loop over ECA cluster
- } // energy theshold
+ } // energy threshold
+ else if(Calibrate(digit->GetAmp()+addOn[nSupMod-1][ieta-1][iphi-1]) < fMinECut ){
+ //if(addOn[nSupMod-1][ieta-1][iphi-1]>0)cout<<"33 digit, add "<<ieta<<" "<<iphi<<" "<<addOn[nSupMod-1][ieta-1][iphi-1]<<" "<<digit->GetAmp()<<endl;
+ digitsC->Remove(digit);
+ }
+ //cout<<"after endofloop: cluno, digNo "<<fNumberOfECAClusters<<endl;
} // while digit
delete digitsC ;
+ AliDebug(1,Form("total no of clusters %d from %d digits",fNumberOfECAClusters,digits->GetEntriesFast()));
}
//____________________________________________________________________________
void AliEMCALClusterizerv1::PrintRecPoints(Option_t * option)
{
// Prints list of RecPoints produced at the current pass of AliEMCALClusterizer
-
- TObjArray * aECARecPoints = AliEMCALGetter::Instance()->ECARecPoints() ;
+ AliEMCALLoader *emcalLoader = dynamic_cast<AliEMCALLoader*>(AliRunLoader::GetRunLoader()->GetDetectorLoader("EMCAL"));
+ TObjArray * aECARecPoints = emcalLoader->RecPoints() ;
+
printf("PrintRecPoints: Clusterization result:") ;
- printf("event # %d\n", gAlice->GetEvNumber() ) ;
+ printf("event # %d\n", emcalLoader->GetRunLoader()->GetEventNumber() ) ;
printf(" Found %d ECA Rec Points\n ",
aECARecPoints->GetEntriesFast()) ;
printf("\n-----------------------------------------------------------------------\n") ;
printf("Clusters in ECAL section\n") ;
printf("Index Ene(GeV) Multi Module phi r theta X Y Z Dispersion Lambda 1 Lambda 2 # of prim Primaries list\n") ;
-
+ Float_t maxE=0;
+ Float_t maxL1=0;
+ Float_t maxL2=0;
+ Float_t maxDis=0;
+
for (index = 0 ; index < aECARecPoints->GetEntries() ; index++) {
AliEMCALRecPoint * rp = dynamic_cast<AliEMCALRecPoint * >(aECARecPoints->At(index)) ;
TVector3 globalpos;
- rp->GetGlobalPosition(globalpos);
+ //rp->GetGlobalPosition(globalpos);
TVector3 localpos;
rp->GetLocalPosition(localpos);
Float_t lambda[2];
rp->GetIndexInList(), rp->GetEnergy(), rp->GetMultiplicity(),
globalpos.X(), globalpos.Y(), globalpos.Z(), localpos.X(), localpos.Y(), localpos.Z(),
rp->GetDispersion(), lambda[0], lambda[1], nprimaries) ;
+ /////////////
+ if(rp->GetEnergy()>maxE){
+ maxE=rp->GetEnergy();
+ maxL1=lambda[0];
+ maxL2=lambda[1];
+ maxDis=rp->GetDispersion();
+ }
+ pointE->Fill(rp->GetEnergy());
+ pointL1->Fill(lambda[0]);
+ pointL2->Fill(lambda[1]);
+ pointDis->Fill(rp->GetDispersion());
+ pointMult->Fill(rp->GetMultiplicity());
+ /////////////
for (Int_t iprimary=0; iprimary<nprimaries; iprimary++) {
printf("%d ", primaries[iprimary] ) ;
}
}
+
+ MaxE->Fill(maxE);
+ MaxL1->Fill(maxL1);
+ MaxL2->Fill(maxL2);
+ MaxDis->Fill(maxDis);
+
+
printf("\n-----------------------------------------------------------------------\n");
}
}
+ void AliEMCALClusterizerv1::BookHists()
+{
+ pointE = new TH1F("pointE","point energy", 2000, 0.0, 150.);
+ pointL1 = new TH1F("pointL1","point L1", 1000, 0.0, 3.);
+ pointL2 = new TH1F("pointL2","point L2", 1000, 0.0, 3.);
+ pointDis = new TH1F("pointDis","point Dis", 1000, 0.0, 3.);
+ pointMult = new TH1F("pointMult","point Mult", 100, 0.0, 100.);
+ digitAmp = new TH1F("digitAmp","Digit Amplitude", 2000, 0.0, 5000.);
+ MaxE = new TH1F("maxE","Max point energy", 2000, 0.0, 150.);
+ MaxL1 = new TH1F("maxL1","Max point L1", 1000, 0.0, 3.);
+ MaxL2 = new TH1F("maxL2","Max point L2", 1000, 0.0, 3.);
+ MaxDis = new TH1F("maxDis","Max point Dis", 1000, 0.0, 3.);
+}
+void AliEMCALClusterizerv1::SaveHists()
+{
+ recofile=new TFile("reco.root","RECREATE");
+ pointE->Write();
+ pointL1->Write();
+ pointL2->Write();
+ pointDis->Write();
+ pointMult->Write();
+ digitAmp->Write();
+ MaxE->Write();
+ MaxL1->Write();
+ MaxL2->Write();
+ MaxDis->Write();
+recofile->Close();
+}
+
+void AliEMCALClusterizerv1::ReadFile()
+{
+ return; // 3-jan-05
+ FILE *fp = fopen("hijing1.dat","r");
+ for(Int_t line=0;line<9113;line++){
+ Int_t eg,l1,l2,sm;
+ Int_t ncols0;
+ ncols0 = fscanf(fp,"%d %d %d %d",&sm,&l1,&l2,&eg);
+ // cout<<eg<<" "<<l1<<" "<<l2<<endl;
+ addOn[sm-1][l1-1][l2-1]=eg;
+ //addOn[sm-1][l1-1][l2-1]=0;
+ }
+}
+