ROOT logo
/*
  Simple macro to make pedstal calibration
  and visualize calibration data

  .L $ALICE_ROOT/TPC/macros/testDataQA.C
  
*/




void testDataQA(Char_t *fileName, Int_t maxevent=10)
{
   AliRawReaderRoot *rawReader = new AliRawReaderRoot(fileName);
   if ( !rawReader ) return;
   AliTPCdataQA *calib     = new AliTPCdataQA; 
   AliTPCdataQA *calibFast = new AliTPCdataQA; 
   calib->SetRangeTime(1,1000);
   calibFast->SetRangeTime(1,1000);
   printf("Processing data\n");
   Int_t event=0;
   while (rawReader->NextEvent()){
     calib->ProcessEvent(rawReader);
     rawReader->Reset();
     calibFast->ProcessEventFast(rawReader);
     event++;
     // if you wann to check the handling of Analyse updates uncomment this
//      if(gRandom->Rndm()<0.3) {
//        calib->Analyse();
//        calibFast->Analyse();
//      }
     if (event>maxevent) break;
   }
   calib->Analyse();
   calibFast->Analyse();

   TFile file1("dataQATestAnalyse.root","recreate");
   calib->Write("AliTPCdataQA");
   calibFast->Write("AliTPCdataQAFast");
   delete rawReader;
   //   delete calib;
   delete calibFast;

   file1.Close();
   //
   TFile file2("dataQATestAnalyse.root");
   AliTPCdataQA* cal = (AliTPCdataQA*)file2.Get("AliTPCdataQA");
   AliTPCdataQA* calFast = (AliTPCdataQA*)file2.Get("AliTPCdataQAFast");
   
   AliTPCPreprocessorOnline preprocesor;
   preprocesor.AddComponent(cal->GetNoThreshold());
   preprocesor.AddComponent(cal->GetOverThreshold10());
   preprocesor.AddComponent(cal->GetOverThreshold20());
   preprocesor.AddComponent(cal->GetOverThreshold30());
   preprocesor.AddComponent(cal->GetNLocalMaxima());
   preprocesor.AddComponent(cal->GetMeanCharge());
   preprocesor.AddComponent(cal->GetMaxCharge());
   preprocesor.AddComponent(cal->GetNTimeBins());
   preprocesor.AddComponent(cal->GetNPads());
   preprocesor.AddComponent(cal->GetTimePosition());

   AliTPCCalPad* calPadNoThr= new AliTPCCalPad(*calFast->GetNoThreshold());
   AliTPCCalPad* calPadThr10= new AliTPCCalPad(*calFast->GetOverThreshold10());
   AliTPCCalPad* calPadThr20= new AliTPCCalPad(*calFast->GetOverThreshold20());
   AliTPCCalPad* calPadThr30= new AliTPCCalPad(*calFast->GetOverThreshold30());
   AliTPCCalPad* calNLocal  = new AliTPCCalPad(*calFast->GetNLocalMaxima());
   AliTPCCalPad* calPadMean = new AliTPCCalPad(*calFast->GetMeanCharge());
   AliTPCCalPad* calPadMax  = new AliTPCCalPad(*calFast->GetMaxCharge());
   AliTPCCalPad* calNTime   = new AliTPCCalPad(*calFast->GetNTimeBins());
   AliTPCCalPad* calNPad    = new AliTPCCalPad(*calFast->GetNPads());
   AliTPCCalPad* calTimePos = new AliTPCCalPad(*calFast->GetTimePosition());
   //
   calPadNoThr ->SetName(Form("%sFast", calPadNoThr->GetName()));
   calPadThr10 ->SetName(Form("%sFast", calPadThr10->GetName()));
   calPadThr20 ->SetName(Form("%sFast", calPadThr20->GetName()));
   calPadThr30 ->SetName(Form("%sFast", calPadThr30->GetName()));
   calNLocal   ->SetName(Form("%sFast", calNLocal  ->GetName()));
   calPadMean  ->SetName(Form("%sFast", calPadMean ->GetName()));
   calPadMax   ->SetName(Form("%sFast", calPadMax  ->GetName()));
   calNTime    ->SetName(Form("%sFast", calNTime   ->GetName()));
   calNPad     ->SetName(Form("%sFast", calNPad    ->GetName()));
   calTimePos  ->SetName(Form("%sFast", calTimePos ->GetName()));

   preprocesor.AddComponent(calPadNoThr );
   preprocesor.AddComponent(calPadThr10 );
   preprocesor.AddComponent(calPadThr20 );
   preprocesor.AddComponent(calPadThr30 );
   preprocesor.AddComponent(calNLocal   );
   preprocesor.AddComponent(calPadMean  );
   preprocesor.AddComponent(calPadMax   );
   preprocesor.AddComponent(calNTime    );
   preprocesor.AddComponent(calNPad     );
   preprocesor.AddComponent(calTimePos  );
   
   preprocesor.DumpToFile("CalibTreeTestAnalyse.root");
   AliTPCCalibViewerGUI::ShowGUI("CalibTreeTestAnalyse.root");
}

 testDataQA.C:1
 testDataQA.C:2
 testDataQA.C:3
 testDataQA.C:4
 testDataQA.C:5
 testDataQA.C:6
 testDataQA.C:7
 testDataQA.C:8
 testDataQA.C:9
 testDataQA.C:10
 testDataQA.C:11
 testDataQA.C:12
 testDataQA.C:13
 testDataQA.C:14
 testDataQA.C:15
 testDataQA.C:16
 testDataQA.C:17
 testDataQA.C:18
 testDataQA.C:19
 testDataQA.C:20
 testDataQA.C:21
 testDataQA.C:22
 testDataQA.C:23
 testDataQA.C:24
 testDataQA.C:25
 testDataQA.C:26
 testDataQA.C:27
 testDataQA.C:28
 testDataQA.C:29
 testDataQA.C:30
 testDataQA.C:31
 testDataQA.C:32
 testDataQA.C:33
 testDataQA.C:34
 testDataQA.C:35
 testDataQA.C:36
 testDataQA.C:37
 testDataQA.C:38
 testDataQA.C:39
 testDataQA.C:40
 testDataQA.C:41
 testDataQA.C:42
 testDataQA.C:43
 testDataQA.C:44
 testDataQA.C:45
 testDataQA.C:46
 testDataQA.C:47
 testDataQA.C:48
 testDataQA.C:49
 testDataQA.C:50
 testDataQA.C:51
 testDataQA.C:52
 testDataQA.C:53
 testDataQA.C:54
 testDataQA.C:55
 testDataQA.C:56
 testDataQA.C:57
 testDataQA.C:58
 testDataQA.C:59
 testDataQA.C:60
 testDataQA.C:61
 testDataQA.C:62
 testDataQA.C:63
 testDataQA.C:64
 testDataQA.C:65
 testDataQA.C:66
 testDataQA.C:67
 testDataQA.C:68
 testDataQA.C:69
 testDataQA.C:70
 testDataQA.C:71
 testDataQA.C:72
 testDataQA.C:73
 testDataQA.C:74
 testDataQA.C:75
 testDataQA.C:76
 testDataQA.C:77
 testDataQA.C:78
 testDataQA.C:79
 testDataQA.C:80
 testDataQA.C:81
 testDataQA.C:82
 testDataQA.C:83
 testDataQA.C:84
 testDataQA.C:85
 testDataQA.C:86
 testDataQA.C:87
 testDataQA.C:88
 testDataQA.C:89
 testDataQA.C:90
 testDataQA.C:91
 testDataQA.C:92
 testDataQA.C:93
 testDataQA.C:94
 testDataQA.C:95
 testDataQA.C:96
 testDataQA.C:97
 testDataQA.C:98
 testDataQA.C:99