ROOT logo
#include "TH1F.h"
#include "TH2F.h"
#include "TMap.h"
#include "TFile.h"
#include "TTree.h"
#include "TBranch.h"
/*
#include "/scratch/alla/alice/AliRoot/STEER/AliCDBManager.h"
#include "/scratch/alla/alice/AliRoot/RAW/AliRawReader.h"
#include "/scratch/alla/alice/AliRoot/T0/AliT0LookUpValue.h"
#include "/scratch/alla/alice/AliRoot/T0/AliT0Parameters.h"
#include "/scratch/alla/alice/AliRoot/T0/AliT0RawReader.h"
*/
void readLaserData(Int_t runNumber=905)
{

  TH1F *hChannel[105];  TH1F *hNumHits[105];   TH1F *hQTC[12];  
  TH2F *hCFD_QTC[12]; TH2F *hCFD_LED[12]; TH1F *h1CFD_LED[12];
  TH1F *hQTCc[12];TH1F *hmpd[12];
  Int_t allData[110][5];
  Int_t numberOfHits[105];
  
  Char_t  buf1[10], buf2[10], buf3[10], buf4[10], buf5[10], buf6[10], buf7[10];

  TTree* digitsTree = new TTree("testData","Tree of test data Digits");
  TBranch *b[106];

   Int_t channels[106];
 
  TString names[106], type;
  AliT0LookUpKey* lookkey= new AliT0LookUpKey();
  AliT0LookUpValue*  lookvalue= new AliT0LookUpValue();
  AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
  AliCDBManager::Instance()->SetRun(0);
  AliT0Parameters *fParam = AliT0Parameters::Instance();
  fParam->Init();
  TMap *lookup = fParam->GetMapLookup();
  TMapIter *iter = new TMapIter(lookup);
  
  for( Int_t iline=0; iline<106; iline++)
    {
      lookvalue = ( AliT0LookUpValue*) iter->Next();
       lookkey = (AliT0LookUpKey*) lookup->GetValue((TObject*)lookvalue);
      if(lookkey){
	Int_t key=lookkey->GetKey();
	names[key]=lookkey->GetChannelName();
	//	cout<<lookkey->GetKey()<<" "<<lookkey->GetChannelName()<<" trm "<<lookvalue->GetTRM()<<" tdc "<<lookvalue->GetTDC()<<" chain  "<<lookvalue->GetChain()<<" channel "<<lookvalue->GetChannel()<<endl;
	hChannel[key] = new TH1F(names[key].Data(),names[key].Data(),30000,0,30000);
	//	hitsname="xHits" + names[key];
	//	hNumHits[key] = new TH1F(hitsname.Data(),hitsname.Data(),50,-0.25,24.25);
	type =names[key] + "/I";
	b[key]=digitsTree->Branch(names[key].Data(),&channels[key], type);
       }
      else
	{cout<<iline<<" no such value "<<endl;}
	
    } 
  for(Int_t ic=0; ic<12; ic++) {
    {
      sprintf(buf1,"QTC%i",ic+1);
      sprintf(buf2,"CFD_QTC%i",ic+1);
      sprintf(buf3,"CFD_LED%i",ic+1);
      sprintf(buf4,"LED-CFD%i",ic+1);
      sprintf(buf5,"56__%i",ic+1);
      sprintf(buf6,"55__%i",ic+1);
      sprintf(buf7,"mpd%i",ic+1);
      
      
      hQTC[ic] = new TH1F(buf1,"QTC",10000,0,10000.0);
      hQTCc[ic] = new TH1F(buf6,"QTCsmall",10000,0.0,10000.0);
      hmpd[ic] = new TH1F(buf7,"mpd",20000,-10000.0,10000.0);
      //     hCFD_QTC[ic] = new TH2F(buf2,"CFD_QTC",7000,1000.5,8000.5,2000,12000.5,18000.5);
      hCFD_QTC[ic] = new TH2F(buf2,"CFD_QTC",700,1000.5,8000.5,2000,12000.5,18000.5);
      hCFD_LED[ic] = new TH2F(buf3,"CFD_LED",500,0.0,500.0,100,14600.0,14700.0);
      h1CFD_LED[ic] = new TH1F(buf4,"CFD_LED",1000,0.0,1000.0);


    }
    

  }
  //   cout<<" hist created "<<endl;
   
  TH1F*hEffCFD= new TH1F("hEffCFD","Effeciency",50,-0.25,24.25);
  TH1F*hEffLED= new TH1F("hEffLED","Effeciency",50,-0.25,24.25);
  TH1F*hEffQT0= new TH1F("hEffQT0","Effeciency",50,-0.25,24.25);
  TH1F*hEffQT1= new TH1F("hEffQT1","Effeciency",50,-0.25,24.25);
  
  
  Char_t filename[13];
  sprintf(filename,"t0%i.raw",runNumber);
   AliRawReader *reader = new AliRawReaderDate(filename);
 // AliRawReader *reader = new AliRawReaderFile();
   reader->LoadEquipmentIdsMap("T0map.txt");
  //    reader->RequireHeader(kFALSE);
   reader->RequireHeader(kTRUE);
   AliT0RawReader *start = new AliT0RawReader(reader);
   //  start->SetNumberOfTRM(1);
   for (Int_t i0=0; i0<105; i0++)
     {
       for (Int_t j0=0; j0<5; j0++) allData[i0][j0]=0; 	
       numberOfHits[i0]=0;
     }
   Int_t event=0;
  
   while (reader->NextEvent()) {
     start->Next();
     for (Int_t i=0; i<105; i++) {
       for (Int_t iHit=0; iHit<5; iHit++) 
	{
	  allData[i][iHit]= start->GetData(i,iHit);
	}
    }
 
   if(event%1000 == 0) printf("Event:%d\n",event);

   //    if(event > 200000) break;
    //  cout<<"!!!!  Event Number "<< event-2<<endl;
   
  	for (Int_t it = 0; it<24; it=it+2)
	  {
	    for (Int_t iHit=0; iHit<5; iHit++)
	      {
	    if(allData[it+25][iHit] != 0 && allData[it+26][iHit] !=0)
	      {
		Int_t cc=it/2;
		// if( allData[56][0]-allData[0][0] > 0) 
		hQTC[cc]->Fill(allData[it+25][iHit]-allData[it+26][iHit]);
		if( allData[55][0]-allData[0][0] > 0) hQTCc[cc]->Fill(allData[it+26][iHit]-allData[it+25][iHit]);
		hmpd[cc]->Fill(allData[it+26][iHit]-allData[it+25][iHit]);
		if(allData[cc+1][iHit] != 0 ) hCFD_QTC[cc]->Fill(allData[it+25][iHit]-allData[it+26][iHit],allData[cc+1][iHit]-allData[0][0]);
		if(allData[cc+1][iHit] != 0 && allData[cc+13][iHit]!=0 ) 
		  {
		    hCFD_LED[cc]->Fill(allData[cc+13][iHit]-allData[cc+1][iHit],allData[cc+1][iHit]-allData[0][0]);  
		    h1CFD_LED[cc]->Fill(allData[cc+13][iHit]-allData[cc+1][iHit]);
		  }
		//  cout<<allData[cc+1][iHit]-allData[0][0]<<" "<<cc<<endl;
	      }
	  }
      }
	
    for (Int_t iHit=0; iHit<5; iHit++) 
      {
	
	for(Int_t ik=1; ik<105; ik++)
	  { 
	    channels[ik] = -100;
	    if((allData[ik][iHit] - allData[0][0]) > 0 ) 
	      {
		numberOfHits[ik]++;
		hChannel[ik] -> Fill(allData[ik][iHit] - allData[0][0]);
		channels[ik] = allData[ik][iHit] - allData[0][0];
	      }
	  }
	  digitsTree->Fill();   
      }
	
    event++;

  } //event

  
 if (event>1)
    {
      cout<<"efficiency for "<<event<<" events"<<endl;
      for (Int_t i0=1; i0<13;  i0++)
	{

	  cout<<names[i0].Data()<<" "<<Float_t(numberOfHits[i0])/Float_t(event)<<" ";
	  cout<<names[i0+13].Data()<<" "<<Float_t(numberOfHits[i0])/Float_t(event)<<" ";
	  cout<<names[i0+57].Data()<<" "<<Float_t(numberOfHits[i0])/Float_t(event)<<" ";
	  cout<<names[i0+69].Data()<<" "<<Float_t(numberOfHits[i0])/Float_t(event)<<endl;
	  
	  hEffCFD->Fill(i0,Float_t(numberOfHits[i0])  / Float_t(event));
	  hEffLED->Fill(i0,Float_t(numberOfHits[i0+13]) / Float_t(event));
	  hEffCFD->Fill(i0+12,Float_t(numberOfHits[i0+57]) /Float_t(event));
	  hEffLED->Fill(i0+12,Float_t(numberOfHits[i0+69]) /Float_t(event));
	}
      cout<<endl;
  
      for (Int_t i0=0; i0<24;  i0=i0+2)
	{
	  hEffQT1->Fill(i0, Float_t (numberOfHits[i0+25]) / Float_t(event));
	  hEffQT0->Fill(i0, Float_t (numberOfHits[i0]+26) / Float_t(event));
	  hEffQT1->Fill((i0+12), Float_t (numberOfHits[i0]+81) /  Float_t(event));
	  hEffQT0->Fill((i0+12), Float_t (numberOfHits[i0]+82) /  Float_t(event));
	  cout<<names[i0+25].Data()<<" "<<Float_t(numberOfHits[i0+25])/Float_t(event)<<" ";
	  cout<<names[i0+26].Data()<<" "<<Float_t(numberOfHits[i0+26])/Float_t(event)<<" ";
	  cout<<names[i0+81].Data()<<" "<<Float_t(numberOfHits[i0]+81)/Float_t(event)<<" ";
	  cout<<names[i0+82].Data()<<" "<<Float_t(numberOfHits[i0]+82)/Float_t(event)<<endl;


	}
    }	      
      
     
  Char_t filehist[40]; 
 sprintf(filehist,"t0tree%i.root",runNumber);
 //  sprintf(filehist,"test.root",runNumber);
 TFile *hist = new TFile(filehist,"RECREATE");
  cout<<" writing hist in file "<<filehist<<endl;

    digitsTree->Write("",TObject::kOverwrite);


  hEffCFD->Write();
  hEffLED->Write();
  hEffQT0->Write();
  hEffQT1->Write();

  for(Int_t ik=0; ik<105; ik++)	hChannel[ik] ->Write();
   
  for (i=0; i<12; i++)
    {
      hQTC[i]->Write();
      hQTCc[i]->Write();
      hmpd[i]->Write();
      hCFD_QTC[i]->Write();
      hCFD_LED[i]->Write();
      h1CFD_LED[i]->Write();
    }

  cout<<" hist in file"<<endl;
 
}
 
 readLaserData.C:1
 readLaserData.C:2
 readLaserData.C:3
 readLaserData.C:4
 readLaserData.C:5
 readLaserData.C:6
 readLaserData.C:7
 readLaserData.C:8
 readLaserData.C:9
 readLaserData.C:10
 readLaserData.C:11
 readLaserData.C:12
 readLaserData.C:13
 readLaserData.C:14
 readLaserData.C:15
 readLaserData.C:16
 readLaserData.C:17
 readLaserData.C:18
 readLaserData.C:19
 readLaserData.C:20
 readLaserData.C:21
 readLaserData.C:22
 readLaserData.C:23
 readLaserData.C:24
 readLaserData.C:25
 readLaserData.C:26
 readLaserData.C:27
 readLaserData.C:28
 readLaserData.C:29
 readLaserData.C:30
 readLaserData.C:31
 readLaserData.C:32
 readLaserData.C:33
 readLaserData.C:34
 readLaserData.C:35
 readLaserData.C:36
 readLaserData.C:37
 readLaserData.C:38
 readLaserData.C:39
 readLaserData.C:40
 readLaserData.C:41
 readLaserData.C:42
 readLaserData.C:43
 readLaserData.C:44
 readLaserData.C:45
 readLaserData.C:46
 readLaserData.C:47
 readLaserData.C:48
 readLaserData.C:49
 readLaserData.C:50
 readLaserData.C:51
 readLaserData.C:52
 readLaserData.C:53
 readLaserData.C:54
 readLaserData.C:55
 readLaserData.C:56
 readLaserData.C:57
 readLaserData.C:58
 readLaserData.C:59
 readLaserData.C:60
 readLaserData.C:61
 readLaserData.C:62
 readLaserData.C:63
 readLaserData.C:64
 readLaserData.C:65
 readLaserData.C:66
 readLaserData.C:67
 readLaserData.C:68
 readLaserData.C:69
 readLaserData.C:70
 readLaserData.C:71
 readLaserData.C:72
 readLaserData.C:73
 readLaserData.C:74
 readLaserData.C:75
 readLaserData.C:76
 readLaserData.C:77
 readLaserData.C:78
 readLaserData.C:79
 readLaserData.C:80
 readLaserData.C:81
 readLaserData.C:82
 readLaserData.C:83
 readLaserData.C:84
 readLaserData.C:85
 readLaserData.C:86
 readLaserData.C:87
 readLaserData.C:88
 readLaserData.C:89
 readLaserData.C:90
 readLaserData.C:91
 readLaserData.C:92
 readLaserData.C:93
 readLaserData.C:94
 readLaserData.C:95
 readLaserData.C:96
 readLaserData.C:97
 readLaserData.C:98
 readLaserData.C:99
 readLaserData.C:100
 readLaserData.C:101
 readLaserData.C:102
 readLaserData.C:103
 readLaserData.C:104
 readLaserData.C:105
 readLaserData.C:106
 readLaserData.C:107
 readLaserData.C:108
 readLaserData.C:109
 readLaserData.C:110
 readLaserData.C:111
 readLaserData.C:112
 readLaserData.C:113
 readLaserData.C:114
 readLaserData.C:115
 readLaserData.C:116
 readLaserData.C:117
 readLaserData.C:118
 readLaserData.C:119
 readLaserData.C:120
 readLaserData.C:121
 readLaserData.C:122
 readLaserData.C:123
 readLaserData.C:124
 readLaserData.C:125
 readLaserData.C:126
 readLaserData.C:127
 readLaserData.C:128
 readLaserData.C:129
 readLaserData.C:130
 readLaserData.C:131
 readLaserData.C:132
 readLaserData.C:133
 readLaserData.C:134
 readLaserData.C:135
 readLaserData.C:136
 readLaserData.C:137
 readLaserData.C:138
 readLaserData.C:139
 readLaserData.C:140
 readLaserData.C:141
 readLaserData.C:142
 readLaserData.C:143
 readLaserData.C:144
 readLaserData.C:145
 readLaserData.C:146
 readLaserData.C:147
 readLaserData.C:148
 readLaserData.C:149
 readLaserData.C:150
 readLaserData.C:151
 readLaserData.C:152
 readLaserData.C:153
 readLaserData.C:154
 readLaserData.C:155
 readLaserData.C:156
 readLaserData.C:157
 readLaserData.C:158
 readLaserData.C:159
 readLaserData.C:160
 readLaserData.C:161
 readLaserData.C:162
 readLaserData.C:163
 readLaserData.C:164
 readLaserData.C:165
 readLaserData.C:166
 readLaserData.C:167
 readLaserData.C:168
 readLaserData.C:169
 readLaserData.C:170
 readLaserData.C:171
 readLaserData.C:172
 readLaserData.C:173
 readLaserData.C:174
 readLaserData.C:175
 readLaserData.C:176
 readLaserData.C:177
 readLaserData.C:178
 readLaserData.C:179
 readLaserData.C:180
 readLaserData.C:181
 readLaserData.C:182
 readLaserData.C:183
 readLaserData.C:184
 readLaserData.C:185
 readLaserData.C:186
 readLaserData.C:187
 readLaserData.C:188
 readLaserData.C:189
 readLaserData.C:190
 readLaserData.C:191
 readLaserData.C:192
 readLaserData.C:193
 readLaserData.C:194
 readLaserData.C:195
 readLaserData.C:196
 readLaserData.C:197
 readLaserData.C:198
 readLaserData.C:199
 readLaserData.C:200
 readLaserData.C:201
 readLaserData.C:202
 readLaserData.C:203
 readLaserData.C:204
 readLaserData.C:205
 readLaserData.C:206
 readLaserData.C:207
 readLaserData.C:208
 readLaserData.C:209
 readLaserData.C:210
 readLaserData.C:211
 readLaserData.C:212
 readLaserData.C:213
 readLaserData.C:214
 readLaserData.C:215
 readLaserData.C:216
 readLaserData.C:217
 readLaserData.C:218
 readLaserData.C:219
 readLaserData.C:220
 readLaserData.C:221
 readLaserData.C:222
 readLaserData.C:223
 readLaserData.C:224
 readLaserData.C:225
 readLaserData.C:226
 readLaserData.C:227