ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/



#include "AliACORDEPreprocessor.h"
#include "TRandom.h"
#include "TFile.h"
#include "AliCDBMetaData.h"
#include "AliCDBEntry.h"
#include "AliLog.h"
#include "AliACORDECalibData.h"
#include "AliACORDEDataDCS.h"

#include <TTimeStamp.h>
#include <TObjString.h>
#include <TList.h>
#include <TH1F.h>

//ACORDE Preprocessor
// It takes data from DAQ and passes it to the class AliACORDECalibModule and 
// stores reference data.
//
// Authors
// Pedro Gonzalez pedro.gonzalez@fcfm.buap.mx
// Irais Bautista irais@fcfm.buap.mx
// Arturo Fernandez Tellez afernan@cern.ch

ClassImp(AliACORDEPreprocessor)

//______________________________________________________________________________________________
AliACORDEPreprocessor::AliACORDEPreprocessor(AliShuttleInterface* shuttle) :
  AliPreprocessor("ACO", shuttle),
  fCalData(0),
  fDataDCS(0)
{
  // constructor
  AddRunType("STANDALONE_BC");
  AddRunType("STANDALONE_PULSER");
  AddRunType("PHYSICS");

}

//______________________________________________________________________________________________
AliACORDEPreprocessor::~AliACORDEPreprocessor()
{
  // destructor
}

//______________________________________________________________________________________________
void AliACORDEPreprocessor::Initialize(Int_t run, UInt_t startTime,
	UInt_t endTime)
{
  // Creates AliACORDECalibModule object

  AliPreprocessor::Initialize(run, startTime, endTime);

	Log(Form("\n\tRun %d \n\tStartTime %s \n\tEndTime %s", run,
		TTimeStamp(startTime).AsString(),
		TTimeStamp(endTime).AsString()));

        fCalData = new AliACORDECalibData();
        fDataDCS = new AliACORDEDataDCS();
}

//______________________________________________________________________________________________
UInt_t AliACORDEPreprocessor::Process(TMap* dcsAliasMap)
{
  
 
//   TH1D *fH1,*fH2,*fH3,*fH4; //Histogram of the rates per module
   
   TH1D *fH[4];
   TFile *daqFile=0x0;



   // retrieve the run type from the Shuttle,

   if(!dcsAliasMap)
   {
   
   Log(Form("Error there isn't dcsAliasMap"));
   return  1;
   
   }


   fDataDCS->ProcessData(*dcsAliasMap);



   AliCDBMetaData metaData1;
   metaData1.SetBeamPeriod(0);
   metaData1.SetResponsible("Pedro and Irais");
   metaData1.SetComment("This preprocessor fills an AliACORDECalibModule object.");

   Bool_t result1 = StoreReferenceData("Calib", "DataDCS",fDataDCS, &metaData1);

   if(!result1)
   return 2;
 
   TString runType = GetRunType();


   Log(Form("Run type for run %d: %s", fRun, runType.Data()));
   TString SourcesId = "CALIB";


  

   //retrieve the list of sources that produced the file with id RATES
 
    TList* sourceList = GetFileSources(kDAQ,SourcesId.Data());

   if (!sourceList)
   {
  	Log(Form("Error: No sources found for id %s", SourcesId.Data()));
	return 3;
   }
  
   // TODO We have the list of sources that produced the files with Id RATES 
   // Now we will loop on the list and we'll query the files one by one. 



   Log(Form("The following sources produced files with the id %s",SourcesId.Data()));
   sourceList->Print();
     
   TIter iter(sourceList);
   TObjString *source = 0;
 
 

   while((source=dynamic_cast<TObjString*> (iter.Next())))
   {
  	
        TString fileName = GetFile(kDAQ,SourcesId.Data(), source->GetName());

  	if (fileName.Length() > 0)
   		Log(Form("Got the file %s, now we can extract some values.", fileName.Data()));

                daqFile = new TFile(fileName.Data(),"READ");
              
              if(!daqFile)
              {
                            
              Log(Form("There are not histos     1"));
	      return 4;

              }

           
                
            fH[0] = (TH1D*)daqFile->Get("fHist1");
            fH[1] = (TH1D*)daqFile->Get("fHist2");
            fH[2] = (TH1D*)daqFile->Get("fHist3");
            fH[3] = (TH1D*)daqFile->Get("fHist4");
          

             
             if(fH[0]!=NULL&&fH[1]!=NULL&&fH[2]!=NULL&&fH[3]!=NULL)  
             {  
             fCalData->AddHHits(fH[0]);
             fCalData->AddHTHits(fH[1]);
             fCalData->AddHMultiHits(fH[2]);
             fCalData->AddHTMultiHits(fH[3]);
             }
            
            else
            {
             Log(Form("There are not histos     2"));
             return 4;
            }
    

   }                   
                                                                          
 
 
  delete sourceList;
  

        //Now we have to store

        AliCDBMetaData metaData;
	metaData.SetBeamPeriod(0);
	metaData.SetResponsible("Pedro and Irais");
	metaData.SetComment("This preprocessor fills an AliACORDECalibModule object.");

          	Bool_t result2 = StoreReferenceData("Calib", "Data",fCalData, &metaData);
      
	delete fCalData;
        delete fDataDCS;
        fDataDCS = 0;
	fCalData = 0;
  

  if (!result2)
  return 5;
  
  return 0;
}

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