ROOT logo
/*
   Macro to test functionality of the AnliAnalysisTaskFiltered.
   To be used within UnitTest suit
   $ALICE_ROOT/test/testAliAnalysisTaskFiltered/AliAnalysisTaskFilteredTest.sh
   To test:
   1.) CPU/Memory/Data volume
   2.) Relative fracion of the information in exported trees
   3.) Compression for points

   Author of test:
   marian.ivanov@cern.ch
   
*/
void CheckOutput();
void AliAnalysisTaskFilteredTest( const char* esdList,   
		       Float_t scalingTracks,
		       Float_t scalingV0,
		       Float_t scalingFriend,		       
		       const char* ocdb ,
		       Int_t nFiles,  
		       Int_t firstFile, 
		       Int_t nEvents, 
		       Int_t firstEvent,
		       Bool_t mc=kFALSE)
{
    TStopwatch timer;
    timer.Start();

    printf("\n\n\n");
    printf("scalingTracks=%d\n",scalingTracks);
    printf("scalingV0=%d\n",scalingV0);
    printf("nFiles=%d\n",nFiles);

    gSystem->SetIncludePath("-I$ROOTSYS/include -I$ALICE_ROOT/include -I$ALICE_ROOT/ITS -I$ALICE_ROOT -I$ALICE_ROOT/TRD");

    gSystem->Load("libANALYSIS");
    gSystem->Load("libANALYSISalice");
    gSystem->Load("libTENDER");
    gSystem->Load("libCORRFW");
    gSystem->Load("libPWGUDbase");
    gSystem->Load("libTPCcalib");
    gSystem->Load("libPWGPP");
    gSystem->Load("libPWGLFspectra");

    //____________________________________________//
    // Make the analysis manager
    AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
    mgr->SetDebugLevel(0);

    AliESDInputHandler* esdH = new AliESDInputHandler();
    //esdH->SetReadFriends(1);
    esdH->SetReadFriends(1);
    mgr->SetInputEventHandler(esdH);  

    // Enable MC event handler
    AliMCEventHandler* handlerMC = new AliMCEventHandler;
    //handler->SetReadTR(kFALSE);
    if (mc) mgr->SetMCtruthEventHandler(handlerMC);

    gROOT->LoadMacro("$ALICE_ROOT/PWGPP/PilotTrain/AddTaskCDBconnect.C");
    AddTaskCDBconnect(ocdb);

    if (gSystem->AccessPathName("localOCDBaccessConfig.C", kFileExists)==0) {
      gROOT->LoadMacro("localOCDBaccessConfig.C");
      localOCDBaccessConfig();
    }
    // Create input chain
    gROOT->LoadMacro("$ALICE_ROOT/PWGUD/macros/CreateESDChain.C");
    TChain* chain = CreateESDChain(esdList, nFiles,firstFile);

    if(!chain) {
        printf("ERROR: chain cannot be created\n");
        return;
    }
    chain->Lookup();
    //
    // Wagons to run 
    //
    gROOT->LoadMacro("$ALICE_ROOT/PWGPP/macros/AddTaskFilteredTree.C");
    AliAnalysisTaskFilteredTree* task = (AliAnalysisTaskFilteredTree*)AddTaskFilteredTree("Filtered.root");
    task->SetLowPtTrackDownscaligF(scalingTracks);
    task->SetLowPtV0DownscaligF(scalingV0);
    task->SetFriendDownscaling(scalingFriend);
    task->SetUseESDfriends(kTRUE);
    // Init
    if (!mgr->InitAnalysis()) 
        mgr->PrintStatus();
    //
    // Run on dataset
    mgr->StartAnalysis("local",chain,nEvents, firstEvent);
    timer.Stop();
    timer.Print();
    delete mgr;
    CheckOutput();
}


void CheckOutput(){
  //
  //
  //
  TFile * f  = TFile::Open("Filtered.root");
  TTree * highPt = (TTree*)f->Get("highPt");
  TTree * treeV0s = (TTree*)f->Get("V0s");
  //
  // Export variable:
  //
  Double_t ratioHighPtV0Entries=treeV0s->GetEntries()/Double_t(treeV0s->GetEntries()+highPt->GetEntries()+0.000001);
  Double_t ratioHighPtV0Size=treeV0s->GetZipBytes()/Double_t(treeV0s->GetZipBytes()+highPt->GetZipBytes()+0.000001);
  printf("#UnitTest:\tAliAnalysisTaskFiltered\tRatioPtToV0Entries\t%f\n",ratioHighPtV0Entries);
  printf("#UnitTest:\tAliAnalysisTaskFiltered\tRatioPtToV0Size\t%f\n",ratioHighPtV0Size);
  //
  //
  Double_t ratioPointsV0 = 2*treeV0s->GetBranch("friendTrack0.fCalibContainer")->GetZipBytes()/Double_t(0.00001+treeV0s->GetZipBytes());
  Double_t ratioPointsHighPt = highPt->GetBranch("friendTrack.fCalibContainer")->GetZipBytes()/Double_t(0.00001+highPt->GetZipBytes());
  printf("#UnitTest:\tAliAnalysisTaskFiltered\tRatioPointsV0\t%f\n",ratioPointsV0);
  printf("#UnitTest:\tAliAnalysisTaskFiltered\tRatioPointsHighPt\t%f\n",ratioPointsHighPt);
  //
  // a.) Check track correspondence
  //
  Int_t entries= highPt->Draw("(friendTrack.fTPCOut.fP[3]-esdTrack.fIp.fP[3])/sqrt(friendTrack.fTPCOut.fC[9]+esdTrack.fIp.fC[9])","friendTrack.fTPCOut.fP[3]!=0","");
  // here we should check if the tracks
  Double_t pulls=TMath::RMS(entries, highPt->GetV1());
  printf("#UnitTest:\tAliAnalysisTaskFiltered\tFriendPull\t%2.4f\n",pulls);
  printf("#UnitTest:\tAliAnalysisTaskFiltered\tFriendOK\t%d\n",pulls<10);

}
 AliAnalysisTaskFilteredTest.C:1
 AliAnalysisTaskFilteredTest.C:2
 AliAnalysisTaskFilteredTest.C:3
 AliAnalysisTaskFilteredTest.C:4
 AliAnalysisTaskFilteredTest.C:5
 AliAnalysisTaskFilteredTest.C:6
 AliAnalysisTaskFilteredTest.C:7
 AliAnalysisTaskFilteredTest.C:8
 AliAnalysisTaskFilteredTest.C:9
 AliAnalysisTaskFilteredTest.C:10
 AliAnalysisTaskFilteredTest.C:11
 AliAnalysisTaskFilteredTest.C:12
 AliAnalysisTaskFilteredTest.C:13
 AliAnalysisTaskFilteredTest.C:14
 AliAnalysisTaskFilteredTest.C:15
 AliAnalysisTaskFilteredTest.C:16
 AliAnalysisTaskFilteredTest.C:17
 AliAnalysisTaskFilteredTest.C:18
 AliAnalysisTaskFilteredTest.C:19
 AliAnalysisTaskFilteredTest.C:20
 AliAnalysisTaskFilteredTest.C:21
 AliAnalysisTaskFilteredTest.C:22
 AliAnalysisTaskFilteredTest.C:23
 AliAnalysisTaskFilteredTest.C:24
 AliAnalysisTaskFilteredTest.C:25
 AliAnalysisTaskFilteredTest.C:26
 AliAnalysisTaskFilteredTest.C:27
 AliAnalysisTaskFilteredTest.C:28
 AliAnalysisTaskFilteredTest.C:29
 AliAnalysisTaskFilteredTest.C:30
 AliAnalysisTaskFilteredTest.C:31
 AliAnalysisTaskFilteredTest.C:32
 AliAnalysisTaskFilteredTest.C:33
 AliAnalysisTaskFilteredTest.C:34
 AliAnalysisTaskFilteredTest.C:35
 AliAnalysisTaskFilteredTest.C:36
 AliAnalysisTaskFilteredTest.C:37
 AliAnalysisTaskFilteredTest.C:38
 AliAnalysisTaskFilteredTest.C:39
 AliAnalysisTaskFilteredTest.C:40
 AliAnalysisTaskFilteredTest.C:41
 AliAnalysisTaskFilteredTest.C:42
 AliAnalysisTaskFilteredTest.C:43
 AliAnalysisTaskFilteredTest.C:44
 AliAnalysisTaskFilteredTest.C:45
 AliAnalysisTaskFilteredTest.C:46
 AliAnalysisTaskFilteredTest.C:47
 AliAnalysisTaskFilteredTest.C:48
 AliAnalysisTaskFilteredTest.C:49
 AliAnalysisTaskFilteredTest.C:50
 AliAnalysisTaskFilteredTest.C:51
 AliAnalysisTaskFilteredTest.C:52
 AliAnalysisTaskFilteredTest.C:53
 AliAnalysisTaskFilteredTest.C:54
 AliAnalysisTaskFilteredTest.C:55
 AliAnalysisTaskFilteredTest.C:56
 AliAnalysisTaskFilteredTest.C:57
 AliAnalysisTaskFilteredTest.C:58
 AliAnalysisTaskFilteredTest.C:59
 AliAnalysisTaskFilteredTest.C:60
 AliAnalysisTaskFilteredTest.C:61
 AliAnalysisTaskFilteredTest.C:62
 AliAnalysisTaskFilteredTest.C:63
 AliAnalysisTaskFilteredTest.C:64
 AliAnalysisTaskFilteredTest.C:65
 AliAnalysisTaskFilteredTest.C:66
 AliAnalysisTaskFilteredTest.C:67
 AliAnalysisTaskFilteredTest.C:68
 AliAnalysisTaskFilteredTest.C:69
 AliAnalysisTaskFilteredTest.C:70
 AliAnalysisTaskFilteredTest.C:71
 AliAnalysisTaskFilteredTest.C:72
 AliAnalysisTaskFilteredTest.C:73
 AliAnalysisTaskFilteredTest.C:74
 AliAnalysisTaskFilteredTest.C:75
 AliAnalysisTaskFilteredTest.C:76
 AliAnalysisTaskFilteredTest.C:77
 AliAnalysisTaskFilteredTest.C:78
 AliAnalysisTaskFilteredTest.C:79
 AliAnalysisTaskFilteredTest.C:80
 AliAnalysisTaskFilteredTest.C:81
 AliAnalysisTaskFilteredTest.C:82
 AliAnalysisTaskFilteredTest.C:83
 AliAnalysisTaskFilteredTest.C:84
 AliAnalysisTaskFilteredTest.C:85
 AliAnalysisTaskFilteredTest.C:86
 AliAnalysisTaskFilteredTest.C:87
 AliAnalysisTaskFilteredTest.C:88
 AliAnalysisTaskFilteredTest.C:89
 AliAnalysisTaskFilteredTest.C:90
 AliAnalysisTaskFilteredTest.C:91
 AliAnalysisTaskFilteredTest.C:92
 AliAnalysisTaskFilteredTest.C:93
 AliAnalysisTaskFilteredTest.C:94
 AliAnalysisTaskFilteredTest.C:95
 AliAnalysisTaskFilteredTest.C:96
 AliAnalysisTaskFilteredTest.C:97
 AliAnalysisTaskFilteredTest.C:98
 AliAnalysisTaskFilteredTest.C:99
 AliAnalysisTaskFilteredTest.C:100
 AliAnalysisTaskFilteredTest.C:101
 AliAnalysisTaskFilteredTest.C:102
 AliAnalysisTaskFilteredTest.C:103
 AliAnalysisTaskFilteredTest.C:104
 AliAnalysisTaskFilteredTest.C:105
 AliAnalysisTaskFilteredTest.C:106
 AliAnalysisTaskFilteredTest.C:107
 AliAnalysisTaskFilteredTest.C:108
 AliAnalysisTaskFilteredTest.C:109
 AliAnalysisTaskFilteredTest.C:110
 AliAnalysisTaskFilteredTest.C:111
 AliAnalysisTaskFilteredTest.C:112
 AliAnalysisTaskFilteredTest.C:113
 AliAnalysisTaskFilteredTest.C:114
 AliAnalysisTaskFilteredTest.C:115
 AliAnalysisTaskFilteredTest.C:116
 AliAnalysisTaskFilteredTest.C:117
 AliAnalysisTaskFilteredTest.C:118
 AliAnalysisTaskFilteredTest.C:119
 AliAnalysisTaskFilteredTest.C:120
 AliAnalysisTaskFilteredTest.C:121
 AliAnalysisTaskFilteredTest.C:122
 AliAnalysisTaskFilteredTest.C:123
 AliAnalysisTaskFilteredTest.C:124
 AliAnalysisTaskFilteredTest.C:125
 AliAnalysisTaskFilteredTest.C:126
 AliAnalysisTaskFilteredTest.C:127
 AliAnalysisTaskFilteredTest.C:128