+ printf("Read/Write error\trow=%d\tpad=%d\n",irow,ipad);
+ }
+ }
+ }
+
+ //
+ // Algebra Tests
+ //
+
+ // Add constant
+ AliTPCCalROC roc3(roc0);
+ roc3.Add(1.5);
+ for (UInt_t irow = 0; irow <roc3.GetNrows(); irow++){
+ for (UInt_t ipad = 0; ipad <roc3.GetNPads(irow); ipad++){
+ Float_t value = irow+ipad/1000. + 1.5;
+ if (TMath::Abs(roc3.GetValue(irow,ipad)-value) > kEpsilon){
+ printf("Add constant - error\trow=%d\tpad=%d\n",irow,ipad);
+ }
+ }
+ }
+
+ // Add another CalROC
+ AliTPCCalROC roc4(roc0);
+ roc4.Add(&roc0, -1.5);
+ for (UInt_t irow = 0; irow <roc4.GetNrows(); irow++){
+ for (UInt_t ipad = 0; ipad <roc4.GetNPads(irow); ipad++){
+ Float_t value = irow+ipad/1000. - 1.5 * (irow+ipad/1000.);
+ if (TMath::Abs(roc4.GetValue(irow,ipad)-value) > kEpsilon){
+ printf("Add CalROC - error\trow=%d\tpad=%d\n",irow,ipad);
+ }
+ }
+ }
+
+ // Multiply with constant
+ AliTPCCalROC roc5(roc0);
+ roc5.Multiply(-1.4);
+ for (UInt_t irow = 0; irow <roc5.GetNrows(); irow++){
+ for (UInt_t ipad = 0; ipad <roc5.GetNPads(irow); ipad++){
+ Float_t value = (irow+ipad/1000.) * (-1.4);
+ if (TMath::Abs(roc5.GetValue(irow,ipad)-value) > kEpsilon){
+ printf("Multiply with constant - error\trow=%d\tpad=%d\n",irow,ipad);
+ }
+ }
+ }
+
+ // Multiply another CalROC
+ AliTPCCalROC roc6(roc0);
+ roc6.Multiply(&roc0);
+ for (UInt_t irow = 0; irow <roc6.GetNrows(); irow++){
+ for (UInt_t ipad = 0; ipad <roc6.GetNPads(irow); ipad++){
+ Float_t value = (irow+ipad/1000.) * (irow+ipad/1000.);
+ if (TMath::Abs(roc6.GetValue(irow,ipad)-value) > kEpsilon*100){
+ printf("Multiply with CalROC - error\trow=%d\tpad=%d\n",irow,ipad);